Rails 使用了错误版本的 Ruby
Rails is using wrong version of Ruby
➜ ~ ruby -v
ruby 1.8.7 (2014-01-28 patchlevel 376) [i686-darwin15.0.0]
➜ ~ rails -v
Rails 2.3.18
➜ ~ gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 2.0.17
- RUBY VERSION: 1.8.7 (2013-06-27 patchlevel 374) [i686-darwin15.0.0]
- INSTALLATION DIRECTORY: /Users/reboot/.rvm/gems/ruby-1.8.7-p374
- RUBY EXECUTABLE: /Users/reboot/.rvm/rubies/ruby-1.8.7-p374/bin/ruby
- EXECUTABLE DIRECTORY: /Users/reboot/.rvm/gems/ruby-1.8.7-p374/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-darwin-15
- GEM PATHS:
- /Users/reboot/.rvm/gems/ruby-1.8.7-p374
- /Users/reboot/.rvm/gems/ruby-1.8.7-p374@global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
但是当我 运行 我的代码在 IDE 时,我收到以下错误:
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- cron_tools (LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
所以从上面的错误消息来看,似乎正在使用 ruby 2.0.0。由于某些原因,我也无法加载文件。
如何告诉 Rails 使用 Ruby 1.8.7。
我已经完成了rvm --default use 1.8.7
这是我的路径
➜ ~ echo $PATH
/Users/reboot/.rvm/gems/ruby-1.8.7-head/bin:/Users/reboot/.rvm/gems/ruby-1.8.7-head@global/bin:/Users/reboot/.rvm/rubies/ruby-1.8.7-head/bin:/Users/reboot/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
➜ ~ which ruby
/Users/reboot/.rvm/rubies/ruby-1.8.7-head/bin/ruby
➜ ~ which rails
/Users/reboot/.rvm/gems/ruby-1.8.7-head/bin/rails
好的所以问题是当我使用 Rubymine
到 运行 一个脚本时它正在使用 Ruby 解释,这就是为什么它没有加载 rails 环境。由于我的脚本使用的是 Time.now - 1.month
,其中 1.month
来自 Active Support,而不是 Ruby stdlib,这就是我收到错误的原因。我通过 运行 从终端
运行脚本解决了这个问题
./script/runner <filename>
一切正常。
我还必须在开头或我的 .zshrc
文件中添加此行以解决 Ruby 版本的问题。
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
➜ ~ ruby -v
ruby 1.8.7 (2014-01-28 patchlevel 376) [i686-darwin15.0.0]
➜ ~ rails -v
Rails 2.3.18
➜ ~ gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 2.0.17
- RUBY VERSION: 1.8.7 (2013-06-27 patchlevel 374) [i686-darwin15.0.0]
- INSTALLATION DIRECTORY: /Users/reboot/.rvm/gems/ruby-1.8.7-p374
- RUBY EXECUTABLE: /Users/reboot/.rvm/rubies/ruby-1.8.7-p374/bin/ruby
- EXECUTABLE DIRECTORY: /Users/reboot/.rvm/gems/ruby-1.8.7-p374/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-darwin-15
- GEM PATHS:
- /Users/reboot/.rvm/gems/ruby-1.8.7-p374
- /Users/reboot/.rvm/gems/ruby-1.8.7-p374@global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
但是当我 运行 我的代码在 IDE 时,我收到以下错误:
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- cron_tools (LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
所以从上面的错误消息来看,似乎正在使用 ruby 2.0.0。由于某些原因,我也无法加载文件。
如何告诉 Rails 使用 Ruby 1.8.7。
我已经完成了rvm --default use 1.8.7
这是我的路径
➜ ~ echo $PATH
/Users/reboot/.rvm/gems/ruby-1.8.7-head/bin:/Users/reboot/.rvm/gems/ruby-1.8.7-head@global/bin:/Users/reboot/.rvm/rubies/ruby-1.8.7-head/bin:/Users/reboot/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
➜ ~ which ruby
/Users/reboot/.rvm/rubies/ruby-1.8.7-head/bin/ruby
➜ ~ which rails
/Users/reboot/.rvm/gems/ruby-1.8.7-head/bin/rails
好的所以问题是当我使用 Rubymine
到 运行 一个脚本时它正在使用 Ruby 解释,这就是为什么它没有加载 rails 环境。由于我的脚本使用的是 Time.now - 1.month
,其中 1.month
来自 Active Support,而不是 Ruby stdlib,这就是我收到错误的原因。我通过 运行 从终端
./script/runner <filename>
一切正常。
我还必须在开头或我的 .zshrc
文件中添加此行以解决 Ruby 版本的问题。
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"