gpt4 book ai didi

ruby-on-rails - Rails 应用程序 Rake 任务不知道如何构建其他 Rake 任务

转载 作者:数据小太阳 更新时间:2023-10-29 08:51:42 26 4
gpt4 key购买 nike

我正在尝试创建一个调用其他两个 rake 任务的 Rake 任务。我找到了有相关问题的人herehere , 但它并没有太大用处。到目前为止,这是我拼凑的。知道我做错了什么吗?

task :cron => :environment do
#if Time.now.hour % 2 == 0
Rake::Task["robots:update_robots"].reenable
Rake::Task["robots:update_robots"].invoke
#end
end

如您所见,这是一项计划由 Heroku 执行的 cron 作业。但我已经注释掉了不需要的内容,因此我可以测试它是否正常工作。

我一直收到这个错误:

Don't know how to build task 'robots:update_robots'

但我不知道为什么。

更新:所以我发现我无法运行我的 cron rake 任务调用的原始任务。我让它运行了一段时间,在某处购买,我删除了“更新”中的“d”。所以这个命令 Rake::Task["robots:upate_robots"].执行不是因为机器人 rake 任务是“更新”,而不是“更新”。

Tl;dr:打字错误。

最佳答案

一般来说,您的解决方案应该有效:

require 'rake'

task :environment do
puts 'task environment'
end

namespace :robots do
task :update_robots do
puts "task robots:update_robots"
end
end

task cron: :environment do
puts 'task cron'
Rake::Task['robots:update_robots'].reenable
Rake::Task['robots:update_robots'].invoke
end

Rake::Task['robots:update_robots'].invoke
Rake::Task[:cron].invoke

# >> robots:update_robots was invoked
# >> task robots:update_robots
# >> task environment
# >> task cron
# >> task robots:update_robots

我的第一个想法是,你一定是搞错了 rake 任务(你确定是“robots:update_robots”吗?)

我觉得您需要重新启用它是不寻常的,这意味着您想要的不是 Rake,而是普通的旧 Ruby。将 update_robots 任务的内容移到一个方法中,然后您可以直接调用该方法,而不是尝试像方法一样处理任务(任务用于处理依赖项,它们只故意调用一次,并且您需要将它们弯曲,这意味着您'重新使用错误的工具来完成工作)。然后,您的代码和 robots:update_robots 都可以调用相同的方法:

require 'rake'

def update_robots
puts "method update_robots"
end

task :environment do
puts 'task environment'
end

namespace :robots do
task :update_robots do
update_robots
puts "task robots:update_robots"
end
end

task cron: :environment do
puts 'task cron'
update_robots
end

Rake::Task['robots:update_robots'].invoke
Rake::Task[:cron].invoke

# >> method update_robots
# >> task robots:update_robots
# >> task environment
# >> task cron
# >> method update_robots

关于ruby-on-rails - Rails 应用程序 Rake 任务不知道如何构建其他 Rake 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11170558/

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