Ruby,如何知道今天是否在批准日期列表中?

时间:2012-10-16 18:52:09

标签: ruby date weekday

我希望我的一个课程只在周二,周三和周四开课​​。我有以下内容:

class ReminderJob

  def perform

    begin
        # Days to send: Tuesdays, Wednesdays, Thursdays
        next Date.today.wday.instance_of?('2,3,4')

如果不是周二,周三,那么这个想法就存在了。关于如何用红宝石解决这个问题的建议?感谢

3 个答案:

答案 0 :(得分:2)

如果您只想让某个任务仅在特定日期/时间运行,您可能需要安排cron job

如果你真的希望一个方法什么都不做,除非它是一周中的某一天,你可以这样做:

return unless [ :tuesday?, :wednesday?, :thursday? ].any? { |day| Date.today.send(day) }

答案 1 :(得分:1)

不要将调度混合到类本身中。让班级严格遵守执行任务的逻辑。

使用cron进行调度。使用nevergem创建cron作业。您可以指定它只应在一周中的某些天,一天中的某些时间等执行。

答案 2 :(得分:0)

虽然你的问题不明确,但我认为你确实有这个疑问的答案:

def perform
  return if [2,3,4].include? Date.today.wday
  puts "Your job!!!"
end