运行rails控制台时加载错误

我使用rails 4.1和ruby 2.1.1

一切正常,但是当我运行rails console时,我得到了这个错误

> 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 `' 

错误后控制台打开并可以使用。

这是.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应用程序中的环境变量是空白的吗?

如果遇到此问题,则应重新启动计算机 。 如果这不能解决,请继续阅读。

bin / spring文件将ENV [“GEM_HOME”]设置为空字符串

斌/spring

 11 ENV["GEM_PATH"] = ([Bundler.bundle_path.to_s] + Gem.path).join(File::PATH_SEPARATOR) 12 ENV["GEM_HOME"] = "" 13 Gem.paths = ENV 

运行rails控制台时崩溃,因为在第41行

 ENV['GEM_HOME'].split(/\//).last 

如果ENV['GEM_HOME']为空,则返回nil

〜/ .rvm /ruby/ruby2.1.1 / .irbrc

 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') 

rvm使用该字符串在控制台中设置提示消息。 如果您将bin / spring中的第12行更改为

 ENV["GEM_HOME"] = "Spring is great!" 

你得到了这个很好的提示

 bin/rails c Loading development environment (Rails 4.1.0) Spring is great! :001 > 

我真的不明白为什么ENV["GEM_HOME"]被设置为空字符串。 所以,我只是改变它来摆脱错误。 我在spring github页面上发布了一个问题。

谨防!

运行spring binstub命令时,bin / spring文件的任何更改都会被覆盖

我刚遇到同样的问题,我在spring stop解决了。 我认为没有必要重新启动计算机。 你应该做的是重新开始弹簧。

这些步骤解决了我的问题:

  • 找到当前的ruby版本

ruby-v

例:

ruby 2.1.2p95(2014-05-08修订版45877)[x86_64-darwin13.0]

  • 删除此版本

rvm删除2.1.2

  • 再次安装

rvm install 2.1.2

您可能只需要指定一个gemset

 rvm gemset use YourGemset 

我发现为每个项目使用单独的gemset是个好主意。 然后将该项目的gemset的名称放在项目根目录中名为.ruby-gemset的文件中。 有关详细信息,请参阅https://rvm.io/workflow/projects 。