gpt4 book ai didi

ruby-on-rails - 在rake任务中调用具有多个任务的多个rake任务

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:27 24 4
gpt4 key购买 nike

我有一个关于rakemultitask的问题我找到了这些答案,让我开始了Question 1Question 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并行运行这两个任务问题是我不能正确使用invoke语法。
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

三。这首先重置任务的已调用状态,从而允许再次执行任务、依赖项和所有:
Rake::Task['namespace:task'].reenable
Rake::Task['namespace:task'].invoke

您可以使用 Rake::Task['namespace:task'].invokeRake::Task['namespace:task'].execute在加载的Rails环境中执行rake任务
所以在结束以上的讨论之后,我认为您可以尝试execute方法喜欢下面,做你想做的事。
Rake::Task['namespace:task'].execute(your_argument)

更多信息: https://medium.com/@sampatbadhe/rake-task-invoke-or-execute-419cd689c3bd
希望这对你有帮助:)

关于ruby-on-rails - 在rake任务中调用具有多个任务的多个rake任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57517056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com