Rails无法加载这样的文件——openssl(LoadError)

Rails无法加载这样的文件——openssl(LoadError),openssl,rubygems,bundler,homebrew,Openssl,Rubygems,Bundler,Homebrew,我有一个Rails 4.0.2应用程序,正在升级到Rails 4.2。我完全遵循了规则。我在每个步骤都运行了迁移rake任务,还运行了bundle/bundle update来更新依赖项。作为过程的一部分,我还必须从Ruby 2.0.0升级到2.3.0 当我尝试启动rails服务器时,会得到以下输出: /Users/ACIDSTEALTH/.gem/ruby/2.3.0/gems/activesupport-4.2.5.1/lib/active_support/key_generator.rb:

我有一个Rails 4.0.2应用程序,正在升级到Rails 4.2。我完全遵循了规则。我在每个步骤都运行了迁移rake任务,还运行了bundle/bundle update来更新依赖项。作为过程的一部分,我还必须从Ruby 2.0.0升级到2.3.0

当我尝试启动rails服务器时,会得到以下输出:

/Users/ACIDSTEALTH/.gem/ruby/2.3.0/gems/activesupport-4.2.5.1/lib/active_support/key_generator.rb:2:in `require': cannot load such file -- openssl (LoadError)
from /Users/ACIDSTEALTH/.gem/ruby/2.3.0/gems/activesupport-4.2.5.1/lib/active_support/key_generator.rb:2:in `<top (required)>'
from /Users/ACIDSTEALTH/.gem/ruby/2.3.0/gems/railties-4.2.5.1/lib/rails/application.rb:5:in `require'
from /Users/ACIDSTEALTH/.gem/ruby/2.3.0/gems/railties-4.2.5.1/lib/rails/application.rb:5:in `<top (required)>'
from /Users/ACIDSTEALTH/.gem/ruby/2.3.0/gems/railties-4.2.5.1/lib/rails.rb:11:in `require'
from /Users/ACIDSTEALTH/.gem/ruby/2.3.0/gems/railties-4.2.5.1/lib/rails.rb:11:in `<top (required)>'
from /Users/ACIDSTEALTH/.gem/ruby/2.3.0/gems/railties-4.2.5.1/lib/rails/commands/server.rb:4:in `require'
from /Users/ACIDSTEALTH/.gem/ruby/2.3.0/gems/railties-4.2.5.1/lib/rails/commands/server.rb:4:in `<top (required)>'
from /Users/ACIDSTEALTH/Dropbox/Work/firmplay/config/boot.rb:5:in `require'
from /Users/ACIDSTEALTH/Dropbox/Work/firmplay/config/boot.rb:5:in `<top (required)>'
from bin/rails:3:in `require_relative'
from bin/rails:3:in `<main>'
/Users/acidsteave/.gem/ruby/2.3.0/gems/activesupport-4.2.5.1/lib/active\u support/key\u generator.rb:2:在“require”中:无法加载此类文件--openssl(LoadError)
来自/Users/acidsteave/.gem/ruby/2.3.0/gems/activesupport-4.2.5.1/lib/active\u support/key\u generator.rb:2:in`'
来自/Users/acidsteave/.gem/ruby/2.3.0/gems/railties-4.2.5.1/lib/rails/application.rb:5:in'require'
来自/Users/acidsteave/.gem/ruby/2.3.0/gems/railties-4.2.5.1/lib/rails/application.rb:5:in`'
from/Users/ACIDSTEALTH/.gem/ruby/2.3.0/gems/railties-4.2.5.1/lib/rails.rb:11:in'require'
来自/Users/acidsteave/.gem/ruby/2.3.0/gems/railties-4.2.5.1/lib/rails.rb:11:in`'
来自/Users/acidsteave/.gem/ruby/2.3.0/gems/railties-4.2.5.1/lib/rails/commands/server.rb:4:in'require'
来自/Users/acidsteave/.gem/ruby/2.3.0/gems/railties-4.2.5.1/lib/rails/commands/server.rb:4:in`'
from/Users/acidsteave/Dropbox/Work/firmplay/config/boot.rb:5:in'require'
从/Users/acidsteave/Dropbox/Work/firmplay/config/boot.rb:5:in`'
来自bin/rails:3:in“require\u relative”
从箱子/轨道:3:in`'
我尝试了以下方法,但都没有成功:

  • 我运行了
    brew安装openssl
    。已安装openssl。没有骰子
  • 运行
    brew更新
    brew医生
    。这使我经历了一个卸载和重新安装brew的整个周期。已将brew与openssl一起重新安装。还是不走运。同样的错误
  • 再次尝试将应用程序降级到Ruby 2.0,但这在Gemfile中引发了一些依赖性问题,因此无法选择
  • 尝试了
    gem安装openssl
    ,失败原因如下:

    错误:执行gem时。。。(Gem::例外) 无法要求openssl、安装openssl并重建ruby(首选)或使用非HTTPS源

  • 我整天都在用头敲击键盘。我在这个问题上找到的有限资源都是专门为使用
    rvm
    的用户定制的。我尝试安装rvm,但这又导致了一系列问题,迫使我最终从系统中删除rvm及其所有痕迹

    我的设置: 操作系统10.11.3 Xcode(最新版本) iTerm2/w ZSH 自制(最新) 用于管理rubies的Chruby和ruby安装 从Ruby 2.0.0上的Rails 4.0.2迁移到Ruby 2.3.0上的Rails 4.2.5

    更新


    我在解决这一问题上取得了一些进展,尽管我必须承认,我对问题的根源一无所知。我用openssldir=/usr/local运行了
    ruby安装ruby-2.3.0----来重新编译ruby。重新启动我的shell,这次我能够重新安装openssl,但我必须执行
    sudogem安装openssl
    。从这里我终于可以启动我的rails服务器了。我仍然对这里发生的事情感到困惑。

    只是发布记录而已

    进行双重升级可能相当复杂。一般来说,在阶段中进行比较容易,并且在进入下一个阶段之前检查是否没有回归

    最初的升级方法基本上是升级Rails,然后,正如Rails抱怨Ruby版本一样,升级Ruby。这是艰苦生活的秘诀。这是我们通常需要重新开始的地方

    升级语言版本可能相当困难。自从Ruby 2.0以来,一切都好得多,通常不用动脑筋,但还是要小心。您的代码可能与一个版本一起工作,而与下一个版本发生冲突。这就是一个好的测试套件以及更先进的验证或验证工具的帮助所在。所有这些听起来都可能是多余的,但是考虑到诸如“代码>数组SyoToHi之类的东西出现在Ruby 2.1中,并且相当多的宝石可能已经使用它…… 一旦目标Ruby版本在没有回归的情况下运行代码(只要时间允许),那么升级项目核心库(这里是Rails)就容易多了。可能出现的问题范围突然变小了


    现在,您必须重新启动shell才能获得到OpenSSL库的正确“链接”。现在很难说发生了什么,但这可能是权限问题,或者是库安装程序中的一个大问题。在这里,很多事情同时发生,缩小范围并重新开始通常要容易得多。

    首先升级Ruby,测试一切都好,然后升级Rails如何?不知道这是什么意思。我升级到2.3.0,我可以通过打开irb来确认它是否有效……也许可以尝试重新编译Ruby。在安装openssl之前,您可能已经编译了它。我删除了Ruby,并根据with Ruby install的建议,使用openssl dir=/usr/include运行了
    Ruby install--。我还试着按照这里概述的步骤来处理安装gem时需要openssl的错误。没用。