从Thor任务在git子模块中运行命令时出错

时间:2013-09-18 07:09:09

标签: ruby shell cucumber thor

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

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

手动它运行正常,但是当我运行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"

但它没有帮助。

1 个答案:

答案 0 :(得分:0)

这不是托尔,它是捆绑者。

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

我需要在块

中使用execute that命令
Bundler.with_clean_env do
  #my commands
end