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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With