Gem confusion, RubyMine vs CLI
I am using cucumber, and I have been having a lot of gem confusion. For example, when I run a feature test, I'll get an error like:
You have already activated gherkin 2.3.3, but your Gemfile requires gherkin 2.2.9. Consider using bundle exec. (Gem::LoadError)
Ok, so I'm trying to figure out how to fix this. I look at my external libraries, and only 2.2.9 is installed. Now if I goto the CLI and run cucumber, it's just fine. I even go as far as to uninstall gherkin 2.3.3 and restart RubyMine, but that does not fix this issue. RubyMine is its own mindset. How do I fix/tweak this? Thanks
Eric
Attachment(s):
Gem confusion.png
Please sign in to leave a comment.
I have tried:
- File -> Synchronize
- File -> invalidate Caches
neither of these worked.
I have tried this in both:
- RubyMine 3.0.1
- RubyMine 3.1 EAP 102.217
Did not work for either Application.
Environment: Ubuntu 10.04, RubyMine 3.1 EAP 102.217, RVM, Ruby 1.9.2-p136
Ok, I have create a seperate gemset, as follows:
ruby-1.9.2-p136@gemset-20110203 [ x86_64 ]
ruby-1.9.2-p136 [ x86_64 ]
Currently, both gemsets are identical:
Gems included by the bundle:
* abstract (1.0.0)
* actionmailer (3.0.3)
* actionpack (3.0.3)
* activemodel (3.0.3)
* activerecord (3.0.3)
* activeresource (3.0.3)
* activesupport (3.0.3)
* arel (2.0.7)
* builder (2.1.2)
* bundler (1.0.10)
* capistrano (2.5.19)
* cucumber (0.9.4)
* cucumber-rails (0.3.2)
* diff-lcs (1.1.2)
* erubis (2.6.6)
* gherkin (2.2.9)
* highline (1.6.1)
* i18n (0.5.0)
* json (1.4.6)
* mail (2.2.15)
* mime-types (1.16)
* net-scp (1.0.4)
* net-sftp (2.0.5)
* net-ssh (2.1.0)
* net-ssh-gateway (1.0.1)
* nokogiri (1.4.4)
* pg (0.10.1)
* polyglot (0.3.1)
* rack (1.2.1)
* rack-mount (0.6.13)
* rack-test (0.5.7)
* rails (3.0.3)
* railties (3.0.3)
* rake (0.8.7)
* rspec (2.4.0)
* rspec-core (2.4.0)
* rspec-expectations (2.4.0)
* rspec-mocks (2.4.0)
* rspec-rails (2.4.1)
* term-ansicolor (1.0.5)
* thor (0.14.6)
* treetop (1.4.9)
* tzinfo (0.3.24)
* webrat (0.7.3)
* webrat-rspec-rails (0.1.1)
If I run cucumber in environment (ruby-1.9.2-p136 [ x86_64 ]) then it works fine. However, if I run cucumber in this environment ( ruby-1.9.2-p136@gemset-20110203 [ x86_64 ] ), then I recieve this error:
ewanchic@noah:~/Projects/EMMIT$ cucumber
/home/ewanchic/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/rubygems.rb:861:in `report_activate_error': RubyGem version error: gherkin(2.2.9 not ~> 2.3.2) (Gem::LoadError)
from /home/ewanchic/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/rubygems.rb:255:in `activate'
from /home/ewanchic/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/rubygems.rb:290:in `block in activate'
from /home/ewanchic/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/rubygems.rb:289:in `each'
from /home/ewanchic/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/rubygems.rb:289:in `activate'
from /home/ewanchic/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/rubygems.rb:1204:in `gem'
from /home/ewanchic/.rvm/gems/ruby-1.9.2-p136@gemset-20110203/bin/cucumber:18:in `<main>'
Reseults are identical now, either in RubyMine or CLI. Looking for ideas in google about this error doesn't provide very much, but ironically it does pull up THIS thread :)
Does anyone have any ideas as to why this new gemset doesn't work?
Eric
Hello Eric,
AFAIK such error relates (at least first error) to following problem. Your ~/../bin/cucumber script loads latest installed cucumber gem, then loads you application scripts. One of them loads Bundler which parses Gemfile and trying to activated mentioned gems. Thus gherking gem (cucumber depends on it) has been already activated by cucumber script and thus bundler cannot activate it. So there are two solutions:
1. More correct
If you launch cucumber script using "bundle exec" then the gem will be initially loaded by bundler and problem should gone. In RubyMine:
2. In Cucumber run configuration settings please chose "'cucumber' gem version" the same as in Gemfile.
By the way, I hope you gemset name doesn't contain a whitespace character? Seems Ruby doesn't work well with whitespaces in paths.