【发布时间】:2014-04-22 09:22:12
【问题描述】:
我正在使用 rails 4.1 和 ruby 2.1.1
一切正常,但是当我运行 rails 控制台时出现此错误
> rails console
Loading development environment (Rails 4.1.0)
load error: /home/andreas/.rvm/rubies/ruby-2.1.1/.irbrc
NoMethodError: undefined method `split' for nil:NilClass
/home/andreas/.rvm/scripts/irbrc.rb:41:in `<top (required)>'
错误后控制台打开,可以使用了。
这是 .irbrc 文件中的第 41 行及其周围的内容。
39 # Calculate the ruby string.
40 rvm_ruby_string = ENV["rvm_ruby_string"] ||
41 (ENV['GEM_HOME'] && ENV['GEM_HOME'].split(/\//).last.split(/@/).first) ||
42 ("#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}" rescue nil) ||
43 (RUBY_DESCRIPTION.split(" ")[1].sub('p', '-p') rescue nil ) ||
44 (`ruby -v` || '').split(" ")[1].sub('p', '-p')
我在控制台中测试时得到这些结果
irb(main):008:0> ENV['GEM_HOME']
=> ""
irb(main):009:0> ENV['GEM_HOME'].split(/\//).last
=> nil
如果我在 rails 应用程序之外运行 irb,我会得到
2.1.1 :001 > ENV['GEM_HOME']
=> "/home/andreas/.rvm/gems/ruby-2.1.1"
2.1.1 :002 > ENV['GEM_HOME'].split(/\//).last
=> "ruby-2.1.1"
你知道为什么rails应用程序中的环境变量是空白的吗?
【问题讨论】:
-
您能否向我们提供有关您的堆栈的更多详细信息?我认为您在 Linux 上运行——它是如何设置的?
-
我也见过这种情况——运行 bundle exec rails c 会产生错误,但 bin/rails c 不会。我没有机会进一步挖掘。也许捆绑器以一种混淆 rvm 的方式弄乱了 gem 环境?
-
@RichPeck 这是最新更新的 ubuntu 14.04、rails 4.1 和 ruby 2.1.1。都是从以前的版本更新的。
-
@FrederickCheung 我收到所有可能命令的错误(bin/rails,bundle exec rails c 和 rails c)。我猜 rails GEM_HOME 可能与全局 GEM_HOME 不同,并且当 rails c 运行时 rails GEM_HOME 正在使用中。
-
这可能是因为您的 rvm 环境发生了一些问题。我刚刚发生了一些事情,所以我正在重新安装 rvm,因为无论如何我那里有 10GB 过时的 ruby 版本。
标签: ruby-on-rails