[英]Invoking multiple rake tasks with multi-task within a rake task
我有一个关于rake multitask
的问题。 我遇到了这些答案,这使我开始思考问题1 问题2 。 我只是想确保我不会丢失某些东西,因为我无法使它正常工作。 我有任务import:locations
,它只是调用其他任务的包装。
namespace :import do
desc "import locations"
task :locations, [:context] => :environment do |t, args|
# Used for printing if tasks fail
if !args[:context].nil?
args[:context][:task] = 'IMPORTING_LOCATIONS'
end
locs = LocationCSV.load_locations # Parse locations once
Rake::Task["locations:branches"].invoke(args[:context], locs)
Rake::Task["locations:venues"].invoke(args[:context], locs)
Uploader.slack_text("Finished import:locations.")
end
end
看来我可以使用multitask
任务并行运行这两个任务。 问题是我无法正确调用语法。
Rake::MultiTask['locations:branches','locations:venues'].(args[:context], locs)
。
我有点迷茫,因为我试图将解析的位置传递到每个任务中(它只是位置哈希值,详细说明了场所和分支所匹配的位置)。 是否可以通过这种方式调用这两个任务? 我想念什么? 在其他rake任务中被调用时,正确的multitask
语法是什么?
我的主要任务如下所示:
namespace :import do
desc "import all data"
task :locations, [:context] => :environment do |t, args|
Rake::Task["import:customers"].invoke
Rake::Task["import:locations"].invoke # where I want the multitask above to occur
Uploader.slack_text("Finished the import.")
end
end
任何其他有关如何运行这些任务的建议(无论是否同时进行)将不胜感激。 以及您在这种情况下对最佳实践的任何指导(经验或阅读资源)将大有帮助。
谢谢。
如果您愿意坚持使用rake的惯用语,则可以使用以下方法:
例:
namespace :namespace do
desc "Example description."
task :task, [:param] => :environment do |t, args|
puts args[:param]
...
end
end
1.这始终执行任务,但不执行其依赖项:
Rake::Task['namespace:task'].execute
2.这将执行依赖关系,但仅在尚未被调用的情况下才执行任务:
Rake::Task['namespace:task'].invoke
3.这首先会重置任务的“已经调用”状态,然后允许再次执行任务,依赖项和所有任务:
Rake::Task['namespace:task'].reenable
Rake::Task['namespace:task'].invoke
您可以使用Rake::Task['namespace:task'].invoke
或Rake::Task['namespace:task'].execute
在加载的Rails环境中执行rake任务Rake::Task['namespace:task'].execute
因此,结束以上讨论后,我认为您可以尝试执行方法。 像下面一样,随心所欲。
Rake::Task['namespace:task'].execute(your_argument)
有关更多信息: https : //medium.com/@sampatbadhe/rake-task-invoke-or-execute-419cd689c3bd
希望这个能对您有所帮助 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.