【发布时间】:2016-02-25 20:17:49
【问题描述】:
我有一个 Rails 4.0.2 应用程序,我正在升级到 Rails 4.2。我完全遵循了migration guide。我在每一步都运行了迁移 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>'
我尝试了以下方法,但都没有成功:
- 我跑了
brew install openssl。安装了openssl。没有骰子。 - 运行
brew update和brew doctor。这使我经历了卸载和重新安装 brew 的整个周期。与openssl一起重新安装了brew。仍然没有运气。同样的错误。 - 尝试再次将应用程序降级到 Ruby 2.0,但这会在 Gemfile 中引发一些依赖性问题,因此无法选择。
-
试过
gem install openssl,失败了:错误:执行 gem 时...(Gem::Exception) 无法要求 openssl,安装 OpenSSL 并重建 ruby(首选)或使用非 HTTPS 源
我整天都在敲键盘。我在这个问题上找到的有限资源都是专门为使用rvm的用户量身定制的。我尝试安装 rvm,但这又导致了一系列问题,迫使我最终从系统中删除了 rvm 及其所有痕迹。
我的设置: 操作系统 10.11.3 Xcode(最新版本) iTerm2 /w ZSH 自制(最新) Chruby 和 ruby-install 用于管理红宝石 从 Ruby 2.0.0 上的 Rails 4.0.2 迁移到 Ruby 2.3.0 上的 Rails 4.2.5。
更新
我在解决这个问题上取得了一些进展,但我必须承认我对问题的根源一无所知。我运行ruby-install ruby-2.3.0 — --with-openssl-dir=/usr/local 重新编译Ruby。重新启动我的 shell,这一次我能够重新安装 openssl,但我必须这样做sudo gem install openssl。从这里我终于能够启动我的 Rails 服务器了。我仍然对这里发生的事情感到困惑。
【问题讨论】:
-
先升级Ruby,测试一切正常,再升级Rails怎么样?
-
不确定你的意思。我升级到 2.3.0,我可以通过打开 irb 来确认它可以工作......
-
也许尝试重新编译 Ruby。你可能在安装 openssl 之前就已经编译过了。
-
我删除了 Ruby,并根据 this issue 的建议使用 ruby-install 运行了
ruby-install -- --with-openssl-dir=/usr/include。还是不行。 -
我还尝试按照此处列出的步骤来解决安装 gem 时需要 openssl 的错误。没用。 gist.github.com/luislavena/f064211759ee0f806c88
标签: openssl rubygems bundler homebrew