我使用的是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应用程序中的环境变量是空白的?
解决方法
如果您遇到此问题,您应该重新启动计算机.如果这不能修复它读.
bin / spring文件将ENV [“GEM_HOME”]设置为空白字符串
斌/春天
11 ENV["GEM_PATH"] = ([Bundler.bundle_path.to_s] + Gem.path).join(File::PATH_SEPARATOR) 12 ENV["GEM_HOME"] = "" 13 Gem.paths = ENV
运行导轨控制台时,这会在第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')
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文件的任何更改都将被覆盖