I am using rails 4.1 and ruby 2.1.1
Everything works, but when I run rails console I get this error
> 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)>'
After the error the console opens and can be used.
Here's the 41th line and surroundings in the .irbrc file.
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')
I get these results when testing in the console
irb(main):008:0> ENV['GEM_HOME']
=> ""
irb(main):009:0> ENV['GEM_HOME'].split(/\//).last
=> nil
If I run irb outside the rails application, I get
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"
Do you know why the environment variable is blank in the rails application?
If you encounter this problem you should restart you computer . If that does not fix it read on.
The bin/spring file sets ENV["GEM_HOME"] to a blank string
bin/spring
11 ENV["GEM_PATH"] = ([Bundler.bundle_path.to_s] + Gem.path).join(File::PATH_SEPARATOR)
12 ENV["GEM_HOME"] = ""
13 Gem.paths = ENV
This crashes when running rails console because in line 41
ENV['GEM_HOME'].split(/\//).last
returns nil if ENV['GEM_HOME']
is blank
~/.rvm/rubies/ruby-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 uses the string to set the prompt message in the console. If you change line 12 in bin/spring to
ENV["GEM_HOME"] = "Spring is great!"
You get this nice prompt
bin/rails c
Loading development environment (Rails 4.1.0)
Spring is great! :001 >
I don't really understand why ENV["GEM_HOME"]
is set to a blank string. So, I just change this to get rid of the error. I have posted an issue on the spring github page.
Any changes to the bin/spring file gets overwritten when you run the spring binstub
command
I just encountered the same problem, and I solved it by spring stop
. I think there is no need to restart the computer. What you should do is to restart spring.
These steps solved my problem:
ruby -v
example:
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]
rvm remove 2.1.2
rvm install 2.1.2
You may just need to specify a gemset with
rvm gemset use YourGemset
I find it's a good idea to use a separate gemset for each project. Then place the name of that project's gemset in a file named .ruby-gemset
in the root of your project. See https://rvm.io/workflow/projects for more info.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.