How to get vendor/gems/cucumber-0.4.2 to use vendor/gems/treetop-1.4.2?

I’ve frozen all the gems used for testing my rails app into vendor/gems
but some of the dependent gems are loaded from

Do I need to specify each gem in cucumber’s dependency tree in the
environment initializer?


Right now I only use config.gem to specify these:

cucumber, webrat, rspec, and rspec-rails

Here are all the others cucumber depends on:

$ RAILS_ENV=test rake gems

  • [F] cucumber >= 0.4.2
    • [F] term-ansicolor = 1.0.4
    • [F] treetop = 1.4.2
      • [F] polyglot >= 0.2.5
    • [F] polyglot = 0.2.9
    • [F] builder = 2.1.2
    • [F] diff-lcs = 1.1.2

I = Installed
F = Frozen
R = Framework (loaded before rails starts)

So treetop is there but running:

$ rake features --trace

results in this error:

undefined method `has_terminal?’ for
#Cucumber::Parser::I18n::EnglishParser (NoMethodError)

Presumably because cucumber is using an older gem version of treetop in
my system gem directory instead of

Part of the trace:

(eval):23:in _nt_feature' /Library/Ruby/Gems/1.8/gems/treetop-1.2.5/lib/treetop/runtime/compiled_parser.rb:18:insend’
parse' /Users/stephen/dev/test/rites/vendor/gems/cucumber-0.4.2/bin/../lib/cucumber/parser/treetop_ext.rb:28:inparse_or_fail’

I’m guessing you’ve run into an issue where Cucumber is calling
“require ‘treetop’” before the Rails stack is initialized (and thus
before vendor/gems is loaded as a gem source). Adding treetop to your
config.gem stuff may not help, but a full stack trace from both
conditions (with config.gem ‘treetop’ and without) will be helpful.

–Matt J.

On Oct 15, 11:38 pm, Stephen B. [email protected]

Stephen B. wrote:

I’ve frozen all the gems used for testing my rails app into vendor/gems

Don’t do that. Only deployment gems should go in there. Testing gems
should just be specified in config/environments/test.rb , as recommended
(I think) in the RSpec and Cucumber docs.


Marnen Laibow-Koser
[email protected]