【问题标题】:Many: `require': cannot load such file -- "gem_name" (LoadError) after upgrade of ruby/rails许多: `require': 无法加载这样的文件 -- "gem_name" (LoadError) 在 ruby​​/rails 升级后
【发布时间】:2014-10-14 12:18:52
【问题描述】:

在我刚刚将 rails 从 4.1 升级到 ruby​​ 从 2.0 升级到 2.1 之后,当我尝试启动 rails 时遇到了几个负载问题。我的许多宝石都抛出这样的错误:

/Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `require': cannot load such file -- jwt (LoadError)
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `block in require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:232:in `load_dependency'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/oauth2-1.0.0/lib/oauth2/strategy/assertion.rb:1:in `<top (required)>'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `block in require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:232:in `load_dependency'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/oauth2-1.0.0/lib/oauth2.rb:8:in `<top (required)>'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `block in require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:232:in `load_dependency'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/omniauth-oauth2-1.2.0/lib/omniauth/strategies/oauth2.rb:1:in `<top (required)>'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `block in require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:232:in `load_dependency'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/omniauth-facebook-2.0.0/lib/omniauth/strategies/facebook.rb:1:in `<top (required)>'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `block in require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:232:in `load_dependency'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/omniauth-facebook-2.0.0/lib/omniauth/facebook.rb:2:in `<top (required)>'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `block in require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:232:in `load_dependency'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/omniauth-facebook-2.0.0/lib/omniauth-facebook.rb:1:in `<top (required)>'
  from /Users/nk/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:76:in `require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:72:in `each'
  from /Users/nk/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:72:in `block in require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:61:in `each'
  from /Users/nk/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:61:in `require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler.rb:133:in `require'
  from /Users/nk/Programmering/au/au/config/application.rb:4:in `<top (required)>'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/railties-4.1.6/lib/rails/commands/commands_tasks.rb:146:in `require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/railties-4.1.6/lib/rails/commands/commands_tasks.rb:146:in `require_application_and_environment!'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/railties-4.1.6/lib/rails/commands/commands_tasks.rb:68:in `console'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/railties-4.1.6/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/railties-4.1.6/lib/rails/commands.rb:17:in `<top (required)>'
  from script/rails:6:in `require'
  from script/rails:6:in `<main>'

我的 gem 文件如下所示:

source 'https://rubygems.org'

# Rake and rails
gem 'rake', '10.3.2'
gem 'rails', '4.1.6'

gem 'protected_attributes'
gem 'rails-observers'
gem 'actionpack-page_caching'
gem 'actionpack-action_caching'
gem 'activerecord-deprecated_finders'


# Databases and caching
gem 'pg', '0.17.1'
gem 'apartment', '0.25.2'
gem 'redis', '~> 3.1.0'
gem 'foreigner', '1.6.1'
gem 'geocoder', '1.2.5'
gem 'dalli', '2.7.2'
gem 'hstore_accessor', '~> 0.6.0'

# Files and processing
gem 'fog', '~> 1.24.0'
gem 'rmagick', '~> 2.13.2', require: 'RMagick'
gem 'carrierwave', '~> 0.10.0'
gem 'carrierwave-meta', '~> 0.0.5'
gem 'rubyzip', '~> 1.1.2'
gem 'sitemap_generator', '~> 5.0.1'
gem 'rubyXL', '~> 3.2.3'

# Model layer
gem 'squeel', '~> 1.2.1'
gem 'ransack', '~> 1.4.0'
gem 'state_machine', '~> 1.2.0'
gem 'active_attr', '0.8.4'
gem 'omniauth-facebook', '2.0.0'
gem 'omniauth-identity', '1.1.1'
gem 'bcrypt-ruby', '~> 3.1.2', require: 'bcrypt'
gem 'redis-objects', '~> 1.0.0'
gem 'leaderboard', '~> 3.7.0'

现在,如果我随后注释掉 omniauth-facebook,那么我只会得到 bcrupt 的以下内容:

/Users/nk/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:76:in `require': cannot load such file -- bcrypt (LoadError)
  from /Users/nk/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:72:in `each'
  from /Users/nk/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:72:in `block in require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:61:in `each'
  from /Users/nk/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler/runtime.rb:61:in `require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@global/gems/bundler-1.7.3/lib/bundler.rb:133:in `require'
  from /Users/nk/Programmering/au/au/config/application.rb:4:in `<top (required)>'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/railties-4.1.6/lib/rails/commands/commands_tasks.rb:146:in `require'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/railties-4.1.6/lib/rails/commands/commands_tasks.rb:146:in `require_application_and_environment!'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/railties-4.1.6/lib/rails/commands/commands_tasks.rb:68:in `console'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/railties-4.1.6/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
  from /Users/nk/.rvm/gems/ruby-2.1.3@au_rails4/gems/railties-4.1.6/lib/rails/commands.rb:17:in `<top (required)>'
  from script/rails:6:in `require'
  from script/rails:6:in `<main>'

它就这样继续下去。为什么我的一些宝石突然导致这种情况?

【问题讨论】:

  • 能否请您也发布您的Gemfile.lock
  • 这里可能真的很遥远,但如果你使用的是 Spring 或类似的预加载程序(我相信它现在包含在 Rails 4 中),我会看到一些非常相似的错误我可以用“spring stop”来解决,试一试;-)

标签: ruby-on-rails ruby ruby-on-rails-4 upgrade


【解决方案1】:

你的本地 ruby​​ 安装一定有问题。

如果您使用的是 rvm gemset,请在您的 gemset 上运行 rvm pristine。 如果您不使用 gemset,请运行 gem pristine --all

【讨论】:

  • 较新版本的 rvm 现在使用 rvm reinstall,它“重新安装 ruby​​ 并在所有 gem 上运行 gem pristine”
  • 谢谢。这几天我一直在处理一个问题。运行gem pristine --all 修复了它。好吧,安装ruby-devel。松了口气。
【解决方案2】:

对我来说,感觉就像您在没有捆绑程序的情况下全局安装了一些 gem,并且没有将这些 gem 添加到您的 Gemfile。没有您的 Gemfile.lock 很难分辨,但例如 jwt Gem 不在您的 Gemfile 中。

我会尝试将丢失的 gem 添加到您的 Gemfile 中,再次运行 bundle install

【讨论】:

    【解决方案3】:

    您是否尝试过使用 bundler 将 gem 重新安装到您的应用程序中的某个位置?

    bundle install --path vendor/bundle
    

    另外:如果这没有帮助,我会尝试删除 rvm 中的 gemset 并再次尝试 bundle / rails c。

    【讨论】:

      【解决方案4】:

      首先,我希望您运行的是“bundle exec rails c”,而不仅仅是“rails c”,以确保您从正确的位置加载 gem。

      如果是这样,请尝试运行“bundle show bcrypt”并检查路径,它应该以

      开头
      "/Users/nk/.rvm/gems/ruby-2.1.3/"
      

      如果没有,通过删除 Gemfile.lock 并再次运行 bundle install 或类似方法来重置 bundler 可能会有所帮助。

      【讨论】:

        【解决方案5】:

        迁移后您是否运行bundle update?如果没有,请运行bundle update 并尝试。在此之前删除 Gemfile.lock 文件

        【讨论】:

        • 我做到了,它运行良好。完全没有问题。之后我尝试运行 rails console 时会出现此问题
        【解决方案6】:

        删除您的 Gemfile.lock 文件并尝试运行 bundle update,然后再次 bundle install。我希望它对你有用。

        【讨论】:

          猜你喜欢
          • 2015-03-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-12
          • 2017-12-04
          • 1970-01-01
          • 2017-01-11
          • 2016-04-01
          相关资源
          最近更新 更多