【问题标题】:Rails - Specifying days when not to run a commandRails - 指定不运行命令的日期
【发布时间】:2014-12-17 21:18:31
【问题描述】:

我有一个通过delayed_job 运行的方法。 有一个字段,用户输入他们不希望任务运行的日期,例如

days_off = ["Wednesday","Thursday"]

每当运行该方法时,我想检查今天是否在“days_off”数组中,如果是,则将 24 小时添加到延迟的作业中

if days_off.include? Time.now.strftime("%A")
  Call.delay(run_at: (DateTime.now + 24.hours )).my_method(c)
else
  Call.my_method(c)
end

但是我不确定如何连续检查 days_off 数组,即在上面的示例中,该方法应该有 48 小时的延迟,因为它不应该在星期三(今天)或星期四运行

【问题讨论】:

  • 我不想取消任何作业,我只是不希望它们在特定日期运行
  • 您的代码将按原样运行 - 如果有两个连续的“休息日”,它不会在其中任何一个上运行 my_method - 它只会重新安排...

标签: ruby-on-rails ruby datetime ruby-on-rails-4 delayed-job


【解决方案1】:

我会从这样的开始:

days_off = ["Wednesday","Thursday"]

if days_off.include? Time.now.strftime("%A")
  one_day = 60 * 60 * 24
  next_run = Time.now
  while days_off.include? next_run.strftime("%A")
    next_run = next_run + one_day
  end
  puts "call.delay() with next_run goes here"
else
  puts "call.my_method() goes here"
end

【讨论】:

    猜你喜欢
    • 2020-04-18
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多