0

我有一个 Rails 3.2 项目,它是一个 git repo,在vendor/autotest-new目录中我有一个 git 子模块。

我想使用 Thor 自动执行一些操作。例如我需要 cucumber -d -f json > test.json在 git 子模块中执行。

手动它工作正常,但是当我运行 thor 任务时,它会引发错误:

/home/user/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/rubygems_integration.rb:214:in `block in replace_gem': cucumber is not part of the bundle. Add it to Gemfile. (Gem::LoadError)
  from /home/user/.rvm/gems/ruby-2.0.0-p247@rails32/bin/cucumber:22:in `<main>'
  from /home/user/.rvm/gems/ruby-2.0.0-p247@rails32/bin/ruby_noexec_wrapper:14:in `eval'
  from /home/user/.rvm/gems/ruby-2.0.0-p247@rails32/bin/ruby_noexec_wrapper:14:in `<main>'

我已经bundle install在子模块中运行了。

雷神任务是:

class DB < Thor

  include Thor::Actions

  desc 'test_task',  "test task"
  def test_task
    Dir.chdir("vendor/autotest-new") do
      puts `bundle exec cucumber -d -f json > test.json`
    end
  end
end

我也试过

run "bundle exec cucumber -d -f json > test.json"
system "bundle exec cucumber -d -f json > test.json"

但这没有帮助。

4

1 回答 1

0

不是雷神,是捆绑器。

答案在这里https://github.com/bundler/bundler/issues/1579

我需要在块中使用执行该命令

Bundler.with_clean_env do
  #my commands
end
于 2013-09-23T04:33:59.207 回答