Rails无法加载这样的文件——openssl(LoadError)
我有一个Rails 4.0.2应用程序,正在升级到Rails 4.2。我完全遵循了规则。我在每个步骤都运行了迁移rake任务,还运行了bundle/bundle update来更新依赖项。作为过程的一部分,我还必须从Ruby 2.0.0升级到2.3.0 当我尝试启动rails服务器时,会得到以下输出: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:
/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一起重新安装。还是不走运。同样的错误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的错误。没用。