Ruby on rails 青瓜';在lib/tasks任务中调用任务时,t运行

Ruby on rails 青瓜';在lib/tasks任务中调用任务时,t运行,ruby-on-rails,cucumber,rake,Ruby On Rails,Cucumber,Rake,我在lib/tasks中有以下任务: task :cuke_test_db_constraints do puts 'cuke_test_db_constraints' ENV['TEST_DB_CONSTRAINTS'] = '1' Rake::Task['cucumber'].reenable Rake::Task['cucumber'].invoke end task :default => :cuke_test_db_co

我在lib/tasks中有以下任务:

task :cuke_test_db_constraints do puts 'cuke_test_db_constraints' ENV['TEST_DB_CONSTRAINTS'] = '1' Rake::Task['cucumber'].reenable Rake::Task['cucumber'].invoke end task :default => :cuke_test_db_constraints 任务:cuke_test_db_约束do 放置“cuke_测试_db_约束” ENV['TEST_DB_CONSTRAINTS']='1' Rake::任务['Cumber']。可重新启用 Rake::Task['Cumber']。调用 结束 任务:默认=>:cuke\U测试\U db\U约束 如您所见,我想在设置一个env变量后再次运行cucumber。然而,当Cucke_test_db_constraints任务运行时,cucumber不会运行场景。cucumber任务本身正在运行,我通过在lib/tasks/cucumber.rake中的cucumber任务下添加调试输出对其进行了检查


有什么想法吗?谢谢。

您应该声明
cucumber
任务依赖于
cuke\u test\u db\u约束,而不是强制调用该任务

task :cuke_test_db_constraints do
  puts 'cuke_test_db_constraints'
  ENV['TEST_DB_CONSTRAINTS'] = '1'
end

task :default => :cucumber
task :cucumber => :cuke_test_db_constraints

哦,我忘了补充一点,如果我运行
rake cuke_test\u db_constraints
,那么它会工作,但是如果我只使用
rake
,它不会工作。我发现了一个解决方法:user cucumber:ok task name,那么它会工作。如果你已经回答了自己的问题,你应该写在下面。我认为你还可以在任务名称之后添加
=>:environment
。如果没有那家伙,可能无法正确地拾取所有信息。