我们正在使用我们项目中带有rails的gem.我知道我们可以使用像这样的gem来安排命令.
every 1.day, :at => '6:00 am' do
command "echo 'hello'"
end
但我的问题是我只想在满足某些条件时执行此命令.这样的事情.
every 1.day, :at => '6:00 am' do
if User.any_new_user?
command "echo 'hello'"
end
end
我们如何通过随时随地实现这一目标?
我能想到的一个可能的解决方案是,我为此创建了一个跑步者并检查那里的情况.如下:
every 1.day, :at => '6:00 am' do
runner "User.say_conditional_hello"
end
在我的用户模型中:
def self.say_conditional_hello
`echo "Hello"`
end
关于这种方法或任何新方法的任何建议都将非常有用.
提前致谢!.
最佳答案 如果您只想在条件为真时安排任务,那么我认为您可以安排任务,然后在运行任务时,代码可以决定是否应该运行,具体取决于您的条件
One possible solution i can think of is that i create a runner for this and check that condition there.Something like:
是的,这是处理这种情况的一种方式,但IMO在使用时的最佳行为是创建一个rake任务,检查条件然后执行代码或执行工作
就像是:
耙任务
namespace :user do
desc "description"
task check_for_new: :environment do
if User.any_new_user?
# code
end
end
end
在schedule.rb文件中
every 1.day, :at => '6:00 am' do
rake "user:check_for_new"
end