【问题标题】:Rails server not loading gems after `bundle install``bundle install`后Rails服务器未加载gem
【发布时间】:2018-04-15 06:18:01
【问题描述】:

我没有对我的 Rails 应用程序进行任何更改,但是当我运行 rails s 时,它给了我这个错误:

/usr/local/lib/ruby/gems/2.4.0/gems/nokogiri-1.8.1/lib/nokogiri.rb:32:in `require': cannot load such file -- nokogiri/nokogiri (LoadError)
from /usr/local/lib/ruby/gems/2.4.0/gems/nokogiri-1.8.1/lib/nokogiri.rb:32:in `rescue in <top (required)>'
from /usr/local/lib/ruby/gems/2.4.0/gems/nokogiri-1.8.1/lib/nokogiri.rb:28:in `<top (required)>'
from /usr/local/lib/ruby/gems/2.4.0/gems/loofah-2.1.1/lib/loofah.rb:3:in `require'
from /usr/local/lib/ruby/gems/2.4.0/gems/loofah-2.1.1/lib/loofah.rb:3:in `<top (required)>'
from /usr/local/lib/ruby/gems/2.4.0/gems/rails-html-sanitizer-1.0.3/lib/rails-html-sanitizer.rb:2:in `require'
from /usr/local/lib/ruby/gems/2.4.0/gems/rails-html-sanitizer-1.0.3/lib/rails-html-sanitizer.rb:2:in `<top (required)>'
from /usr/local/lib/ruby/gems/2.4.0/gems/actionview-5.0.6/lib/action_view/helpers/sanitize_helper.rb:2:in `require'
from /usr/local/lib/ruby/gems/2.4.0/gems/actionview-5.0.6/lib/action_view/helpers/sanitize_helper.rb:2:in `<top (required)>'
from /usr/local/lib/ruby/gems/2.4.0/gems/actionview-5.0.6/lib/action_view/helpers.rb:58:in `require'
from /usr/local/lib/ruby/gems/2.4.0/gems/actionview-5.0.6/lib/action_view/helpers.rb:58:in `<module:Helpers>'
from /usr/local/lib/ruby/gems/2.4.0/gems/actionview-5.0.6/lib/action_view/helpers.rb:4:in `<module:ActionView>'
from /usr/local/lib/ruby/gems/2.4.0/gems/actionview-5.0.6/lib/action_view/helpers.rb:3:in `<top (required)>'
from /usr/local/lib/ruby/gems/2.4.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/context.rb:1:in `require'
from /usr/local/lib/ruby/gems/2.4.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/context.rb:1:in `<top (required)>'
from /usr/local/lib/ruby/gems/2.4.0/gems/sprockets-rails-3.2.1/lib/sprockets/railtie.rb:7:in `require'
from /usr/local/lib/ruby/gems/2.4.0/gems/sprockets-rails-3.2.1/lib/sprockets/railtie.rb:7:in `<top (required)>'
from /usr/local/lib/ruby/gems/2.4.0/gems/sass-rails-5.0.6/lib/sass/rails/railtie.rb:3:in `require'
from /usr/local/lib/ruby/gems/2.4.0/gems/sass-rails-5.0.6/lib/sass/rails/railtie.rb:3:in `<top (required)>'
from /usr/local/lib/ruby/gems/2.4.0/gems/sass-rails-5.0.6/lib/sass/rails.rb:11:in `require'
from /usr/local/lib/ruby/gems/2.4.0/gems/sass-rails-5.0.6/lib/sass/rails.rb:11:in `<top (required)>'
from /usr/local/lib/ruby/gems/2.4.0/gems/sass-rails-5.0.6/lib/sass-rails.rb:1:in `require'
from /usr/local/lib/ruby/gems/2.4.0/gems/sass-rails-5.0.6/lib/sass-rails.rb:1:in `<top (required)>'
from /usr/local/lib/ruby/gems/2.4.0/gems/bundler-1.16.0/lib/bundler/runtime.rb:81:in `require'
from /usr/local/lib/ruby/gems/2.4.0/gems/bundler-1.16.0/lib/bundler/runtime.rb:81:in `block (2 levels) in require'
from /usr/local/lib/ruby/gems/2.4.0/gems/bundler-1.16.0/lib/bundler/runtime.rb:76:in `each'
from /usr/local/lib/ruby/gems/2.4.0/gems/bundler-1.16.0/lib/bundler/runtime.rb:76:in `block in require'
from /usr/local/lib/ruby/gems/2.4.0/gems/bundler-1.16.0/lib/bundler/runtime.rb:65:in `each'
from /usr/local/lib/ruby/gems/2.4.0/gems/bundler-1.16.0/lib/bundler/runtime.rb:65:in `require'
from /usr/local/lib/ruby/gems/2.4.0/gems/bundler-1.16.0/lib/bundler.rb:114:in `require'
from /Users/jenyoung/Documents/Testing/Rails-Test/config/application.rb:7:in `<top (required)>'
from /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:88:in `require'
from /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:88:in `block in server'
from /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:85:in `tap'
from /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:85:in `server'
from /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
from /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.0.6/lib/rails/commands.rb:18:in `<top (required)>'
from /Users/jenyoung/Documents/Testing/Rails-Test/bin/rails:9:in `require'
from /Users/jenyoung/Documents/Testing/Rails-Test/bin/rails:9:in `<top (required)>'
from /usr/local/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `load'
from /usr/local/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `call'
from /usr/local/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/client/command.rb:7:in `call'
from /usr/local/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/client.rb:30:in `run'
from /usr/local/lib/ruby/gems/2.4.0/gems/spring-2.0.2/bin/spring:49:in `<top (required)>'
from /usr/local/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `load'
from /usr/local/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `<top (required)>'
from /usr/local/Cellar/ruby/2.4.2_1/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:68:in `require'
from /usr/local/Cellar/ruby/2.4.2_1/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:68:in `require'
from /Users/jenyoung/Documents/Testing/Rails-Test/bin/spring:15:in `<top (required)>'
from bin/rails:3:in `load'
from bin/rails:3:in `<main>'

我已经运行bundle install,它运行成功,但我仍然看到上述错误。

这可能是我的 Rails 的配置问题以及它在哪里寻找宝石?如果是这样,我该如何设置它来寻找 ./vendor/gems/ruby/2.4.0 中的宝石呢?

我还在列出的各种宝石上尝试了gem install

这是我的 Ruby 和 Rails 所在的位置:

$ which ruby
/usr/local/bin/ruby

$ which -a ruby
/usr/local/bin/ruby
/usr/local/bin/ruby
/usr/local/bin/ruby
/usr/bin/ruby

$ which rails
/usr/local/bin/rails

$ which -a rails
/usr/local/bin/rails
/usr/local/bin/rails
/usr/local/bin/rails
/usr/bin/rails

$ ruby -v
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin16]

$ rails -v
Rails 5.0.6

我使用的是 OSX 10.12.6 - Sierra。

宝石文件:

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', '~> 5.0.1'
# Use sqlite3 as the database for Active Record

# 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
gem 'hellosign-ruby-sdk'
gem 'dotenv-rails', groups: [:development, :test]
# 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'
gem 'nokogiri'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
gem 'httparty'

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platform: :mri
  gem 'sqlite3'
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

group :production do
  gem 'pg'
end

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

所以我也尝试创建一个全新的 rails 应用程序并运行 rails s,它也给了我一个类似的错误,如下所示:

/usr/local/lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13/lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)

【问题讨论】:

  • gem install nokogiri 有效吗?您是否按照此说明进行操作? nokogiri.org/tutorials/installing_nokogiri.html
  • 是的,我已经运行 gem install nokogiri 并按照这些指示运行,并且运行成功
  • bundle exec rails s 工作吗?
  • Could this be a configuration issue with my Rails and where it's looking for gems? If so, how can I set it to look for the gems in ./vendor/gems/ruby/2.4.0 instead? 这没有意义。因为您可以将ruby 2.4.0 用于多个应用程序,所以最好使用/usr/local/lib/ruby/gems/2.4.0/ 路径。这样,您不会为同一个 ruby​​ 版本安装两次该 gem

标签: ruby-on-rails ruby macos rubygems ruby-on-rails-5


【解决方案1】:

删除所有给您此错误的 gem 的 gem 版本。例如,将 gem 'uglifier', '>= 1.3.0' 更改为 gem 'uglifier' 对所有生成错误的 gem 执行此操作。如果它不起作用,请不要捆绑安装,只需捆绑(仅适用于旧版本的捆绑器)捆绑器的新版本(即捆绑器 pre--)捆绑并安装,而旧版本仅捆绑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    相关资源
    最近更新 更多