简体   繁体   English

LoadError:无法加载此类文件— roo

[英]LoadError: cannot load such file — roo

I have been troubleshooting a problem in my Ruby on Rails application for the last 2.5 days. 在过去的2.5天里,我一直在排除Ruby on Rails应用程序中的问题。 Having used resources online and here on stackoverflow, I've made progress, but still have not resolved the issue. 在线使用资源,然后在stackoverflow上使用资源,我已经取得了进步,但是仍然没有解决问题。

Quandary: I cannot load the roo gem or the spreadsheet gem into my Rails application. 难题:我无法将roo gem或电子表格gem加载到我的Rails应用程序中。

I have successfully used the spreadsheet gem from the IRB terminal to execute a simple script and output the data read from a spreadsheet to the terminal. 我已经成功地使用了IRB终端中的电子表格gem来执行一个简单的脚本,并将从电子表格中读取的数据输出到终端。 This indicates the gem installed correctly and functions correctly. 这表明该宝石已正确安装并且可以正常运行。

Nevertheless, Rails doesn't seem to want to recognize these two gems. 尽管如此,Rails似乎并不想识别这两个宝石。 This comes after many attempts to properly configure the versions of the dependencies and the development dependencies. 这是在多次尝试正确配置依赖项版本和开发依赖项之后进行的。

My Welcome controller: 我的欢迎控制器:

class WelcomeController < ApplicationController
    require 'roo'

    def index
        puts "Hello Rails!"
    end
end

My Gemfile : 我的Gemfile

source 'https://rubygems.org'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 4.2.8'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use Puma as the app server
gem 'puma', '~> 3.0'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a     debugger console
  gem 'byebug', platform: :mri
end

group :development do
  # Access an IRB console on exception pages or by using <%= console %>     anywhere in the code.
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '~> 3.0.5'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

gem 'minitest', '~> 5.4'

gem 'rack', '~> 1.6'

gem 'nokogiri'

gem 'ruby-ole'

gem 'hoe', '~> 3.14'

gem 'rdoc', '~> 4.0'

gem 'roo', '2.7.0'

gem 'spreadsheet', '1.1.0'

My roo.gemspec file: 我的roo.gemspec文件:

# encoding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'roo/version'

Gem::Specification.new do |spec|
  spec.name          = 'roo'
  spec.version       = Roo::VERSION
  spec.authors       = ['Thomas Preymesser', 'Hugh McGowan', 'Ben Woosley', 'Oleksandr Simonov', 'Steven Daniels']
  spec.email         = ['ruby.ruby.ruby.roo@gmail.com', 'oleksandr@simonov.me']
  spec.summary       = 'Roo can access the contents of various spreadsheet files.'
  spec.description   = "Roo can access the contents of various spreadsheet files. It can handle\n* OpenOffice\n* Excelx\n* LibreOffice\n* CSV"
  spec.homepage      = 'http://github.com/roo-rb/roo'
  spec.license       = 'MIT'

  spec.files         = `git ls-files -z`.split("\x0")
  spec.files.reject! { |fn| fn.include?('test/files') }
  spec.require_paths = ['lib']

  spec.add_dependency 'nokogiri', '~> 1'
  spec.add_dependency 'rubyzip', '~> 1.1', '< 2.0.0'

  spec.add_development_dependency 'rake', '~> 10.1'
  spec.add_development_dependency 'minitest', '~> 5.4', '>= 5.4.3'
  spec.add_development_dependency 'rack', '~> 1.6', '< 2.0.0'
end

I tried editing the file to change the spec.require_paths variable as follows: 我尝试编辑文件以如下更改spec.require_paths变量:

spec.require_paths = ['lib/roo']

But I had no success after running 但是跑步后我没有成功

>> bundle update
>> bundle install

My path to the roo gem: 我通往roo gem的道路:

/var/lib/gems/2.3.0/gems/roo-2.7.0/

I'm running LXLE Linux, a Lubuntu derivative. 我正在运行Lubuntu衍生产品LXLE Linux。

I have attempted solutions found in these questions, but nothing seems to work for me: 我尝试了以下问题的解决方案,但似乎没有任何效果:

Ruby roo LoadError: cannot load such file -- spreadsheet/note Ruby Roo LoadError:无法加载此类文件-电子表格/注释

cannot load such file -- sqlite3/sqlite3_native (LoadError) on ruby on rails 无法加载此类文件-Raillite上的ruby上的sqlite3 / sqlite3_native(LoadError)

It seems like I have set my dependencies correctly according to the documentation on rubygems.org. 似乎我已经根据rubygems.org上的文档正确设置了依赖项。

Has anyone had any issues like this? 有人遇到过这样的问题吗? I've been looking at this issue for the last few days, so perhaps I'm glossing over something that is important, so I thought writing it up and asking about it would help. 最近几天,我一直在关注这个问题,所以也许我正在掩盖重要的事情,所以我认为编写并询问有关问题将有所帮助。 I'll be spending a few more hours on it today. 我今天还要花几个小时。

Two things you can check: 您可以检查两件事:

  • gemset: make sure the gem is installed in the same gemset in which you are in gemset:确保将gem安装在您所在的gemset中
  • ruby version: make sure the gem is installed in the same ruby version as you are using. 红宝石版本:确保宝石安装时使用的是相同的红宝石版本。

To check, execute 'gem list' from your project directory and see if the gem is listed. 要进行检查,请从您的项目目录中执行“ gem list”,然后查看是否列出了gem。

If not in same gemset, you can use: 如果不在同一个gemset中,则可以使用:

rvm use gemset_name 

If not in same ruby version, set it to use the ruby version, example 2.3.3 如果不是同一Ruby版本,则将其设置为使用Ruby版本,例如2.3.3。

rvm use 2.3.3

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM