cucumber / cucumber-rails

Rails Generators for Cucumber with special support for Capybara and DatabaseCleaner
https://github.com/cucumber/cucumber-rails
MIT License
1.01k stars 327 forks source link

Unable to run 'rake cucumber' with unpacked gherkin gem #43

Closed jbekas closed 13 years ago

jbekas commented 14 years ago

Environment:

Mac OS X Darwin Kernel Version 10.4.0
ruby, version 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] 
rails, version 2.3.8 
rubygems, version 1.3.7 
rake, version 0.8.7 

in my config/environments/test.rb

# rspec, cucumber
config.gem "rspec", :lib => false, :version => ">=1.3.0" 
config.gem "rspec-rails", :lib => false, :version => ">=1.3.2" 
config.gem "webrat", :lib => false, :version => ">=0.7.1" 
config.gem "cucumber-rails", :lib => false, :version => ">=0.3.2" 
config.gem "gherkin", :version => ">=2.0.2"
$ gem list --local 
*** LOCAL GEMS *** 
actionmailer (2.3.8, 2.3.5, 1.3.6) 
actionpack (2.3.8, 2.3.5, 1.13.6) 
actionwebservice (1.2.6) 
activerecord (2.3.8, 2.3.5, 1.15.6) 
activeresource (2.3.8, 2.3.5) 
activesupport (2.3.8, 2.3.5, 1.4.4) 
acts_as_ferret (0.4.3) 
authlogic (2.1.3) 
builder (2.1.2) 
capistrano (2.5.2) 
cgi_multipart_eof_fix (2.5.0) 
cucumber (0.8.3) 
cucumber-rails (0.3.2) 
daemons (1.0.10) 
dancroak-validates_email_format_of (1.2.2) 
database_cleaner (0.5.2) 
diff-lcs (1.1.2) 
dnssd (0.6.0) 
faker (0.3.1) 
fastthread (1.0.1) 
fcgi (0.8.7) 
ferret (0.11.6) 
gem_plugin (0.2.3) 
gemcutter (0.5.0) 
gherkin (2.0.2) 
git (1.2.5) 
highline (1.5.0) 
hpricot (0.6.164) 
jeweler (1.4.0) 
json (1.4.3) 
json_pure (1.4.3) 
libxml-ruby (1.1.2) 
memcache-client (1.8.3) 
mislav-will_paginate (2.3.11) 
mocha (0.9.8) 
mongrel (1.1.5) 
needle (1.3.0) 
net-scp (1.0.1) 
net-sftp (2.0.1, 1.1.1) 
net-ssh (2.0.4, 1.1.4) 
net-ssh-gateway (1.0.0) 
nokogiri (1.4.2) 
passenger (2.2.11) 
pg (0.9.0) 
postgres-pr (0.6.3) 
prawn (0.8.4) 
prawn-core (0.8.4) 
prawn-layout (0.8.4) 
prawn-security (0.8.4) 
rack (1.1.0, 1.0.1) 
rack-test (0.5.4) 
rails (2.3.8, 2.3.5, 1.2.6) 
rake (0.8.7, 0.8.3) 
rbench (0.2.3) 
RedCloth (4.1.1) 
rspec (1.3.0) 
rspec-rails (1.3.2) 
ruby-ole (1.2.10.1) 
ruby-openid (2.1.2) 
ruby-prof (0.8.1) 
ruby-yadis (0.3.4) 
rubyforge (2.0.4) 
rubygems-update (1.3.7) 
rubynode (0.1.5) 
spreadsheet (0.6.4.1) 
sqlite3-ruby (1.2.4) 
term-ansicolor (1.0.5) 
termios (0.9.4) 
text-format (1.0.0) 
text-hyphen (1.0.0) 
tmail (1.2.7.1) 
trollop (1.16.2) 
tzinfo (0.3.20) 
webrat (0.7.1) 
xmpp4r (0.4)
$ rake cucumber 
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -I 
"/Library/Ruby/Gems/1.8/gems/cucumber-0.8.3/lib:lib" "/Library/Ruby/ 
Gems/1.8/gems/cucumber-0.8.3/bin/cucumber"  --profile default 
Using the default profile... 
.................................. 
4 scenarios (4 passed) 
34 steps (34 passed) 
0m1.222s 
$ rake gems:unpack:dependencies RAILS_ENV=test 
Unpacked gem: '/Users/john/project/vendor/gems/rspec-1.3.0' 
Unpacked gem: '/Users/john/project/vendor/gems/rspec-rails-1.3.2' 
Unpacked gem: '/Users/john/project/vendor/gems/webrat-0.7.1' 
Unpacked gem: '/Users/john/project/vendor/gems/nokogiri-1.4.2' 
Unpacked gem: '/Users/john/project/vendor/gems/rack-test-0.5.4' 
Unpacked gem: '/Users/john/project/vendor/gems/cucumber-rails-0.3.2' 
Unpacked gem: '/Users/john/project/vendor/gems/cucumber-0.8.3' 
Unpacked gem: '/Users/john/project/vendor/gems/gherkin-2.0.2' 
Unpacked gem: '/Users/john/project/vendor/gems/trollop-1.16.2' 
Unpacked gem: '/Users/john/project/vendor/gems/term-ansicolor-1.0.5' 
Unpacked gem: '/Users/john/project/vendor/gems/diff-lcs-1.1.2' 
$ sudo gem uninstall gherkin 
$ rake gems:build 
Built gem: '/Users/john/project/vendor/gems/gherkin-2.0.2' 
Built gem: '/Users/john/project/vendor/gems/nokogiri-1.4.2' 
$ rake cucumber 
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -I 
"/Users/john/project/vendor/gems/cucumber-0.8.3/lib:lib" "/Users/john/ 
project/vendor/gems/cucumber-0.8.3/bin/cucumber"  --profile default 
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in 
`gem_original_require': no such file to load -- gherkin (LoadError) 
        from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in 
`require' 
        from /Users/john/project/vendor/gems/cucumber-0.8.3/bin/../lib/ 
cucumber/cli/main.rb:5 
        from /Users/john/project/vendor/gems/cucumber-0.8.3/bin/cucumber:5:in 
`require' 
        from /Users/john/project/vendor/gems/cucumber-0.8.3/bin/cucumber:5 
rake aborted! 
Command failed with status (1): [/System/Library/Frameworks/ 
Ruby.framework/...] 
(See full trace by running task with --trace) 

If I reinstall the gherkin gem everything is back to normal.

I've also tried using the script/cucumber to see if it is rake specific.

$ ruby script/cucumber 
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in 
`gem_original_require': no such file to load -- gherkin (LoadError) 
        from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in 
`require' 
        from /Users/john/project/vendor/gems/cucumber-0.8.3/bin/../lib/ 
cucumber/cli/main.rb:5 
        from /Users/john/project/vendor/gems/cucumber-0.8.3/bin/cucumber:5:in 
`require' 
        from /Users/john/project/vendor/gems/cucumber-0.8.3/bin/cucumber:5 
        from script/cucumber:5:in `load' 
        from script/cucumber:5 

However, specifying the lib path seems to clear up the problem.

$ ruby -Ivendor/gems/gherkin-2.0.2/lib script/cucumber 
Using the default profile... 
.................................. 
4 scenarios (4 passed) 
34 steps (34 passed) 
0m1.309s 

Here is a workaround!

Modify vendor/gems/cucumber-0.8.3/lib/cucumber/rake/task.rb and add a hardcoded path for the gherkin libraries:

class ForkedCucumberRunner #:nodoc: 
        attr_reader :args 
        def initialize(libs, cucumber_bin, cucumber_opts, feature_files) 
          libs.unshift("#{Rails.root}/vendor/gems/gherkin-2.0.2/lib") 
          @args = ( 
            ['-I'] + load_path(libs) + 
            quoted_binary(cucumber_bin) + 
            cucumber_opts + 
            feature_files 
          ).flatten 
        end 
aslakhellesoy commented 13 years ago

This would be a cucumber bug, not a cucumber-rails bug.