我有一个文件,我想在命令提示符下运行。我可以直接这样做,也可以从irb这样做,但当我尝试通过Cucumber运行完全相同的文件时,它在gem文件中找不到rake。
我的Cuke开始有点像这样:
Scenario: The aliens have landed
Given everything is set up right
...
匹配步骤定义调用命令提示符并执行文件。
Given /^everything is set up right$/ do
system('C:\svn\browser\apps\xyzstuff\lib\proof_of_concept.bat')
end
以下是proof_of_concept.bat
的内容set curr_dir=%cd%
chdir /D C:\svn\browser\spec\integration\xyz\forms
bundle exec rake spec:integration:xyz:forms:single_order_flow MY_ENV=vdev
chdir /D %curr_dir%
这是我在运行Cuke时在控制台中看到的内容:
C:\svn\browser\spec\integration\xyz\forms>bundle exec rake spec:integration:xyz:forms:single_order_flow MY_ENV=vdev
C:/bundler-ruby/lib/ruby/gems/1.8/gems/bundler-1.0.15/lib/bundler/rubygems_integration.rb:143:in `gem': rake is not part of the bundle. Add it to Gemfile. (Gem::LoadError)
from C:/bundler-ruby/lib/ruby/gems/1.8/bin/rake:18
我认为,当前工作目录在每种情况下都是相同的,因为它是由批处理文件控制的。为什么bundler在这种情况下没有找到rake,但是当直接或通过irb执行同一个文件时它确实找到了它?
答案 0 :(得分:0)
我将gem 'rake', '0.8.7'
添加到C:\svn\browser\Gemfile
这样做后,我不再遇到上述问题了。但是,我现在遇到this SO question.
中描述的问题