簡體   English   中英

運行rails控制台時加載錯誤

[英]Load error when running rails console

我使用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 `<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

運行rails控制台時崩潰,因為在第41行

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

如果ENV['GEM_HOME']為空,則返回nil

〜/ .rvm /紅寶石/紅寶石2.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解決了。 我認為沒有必要重新啟動計算機。 你應該做的是重新開始彈簧。

這些步驟解決了我的問題:

  • 找到當前的紅寶石版本

紅寶石-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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM