0

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

class ReminderJob

  def perform

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

这个想法是,如果不是星期二,星期三,星期四,则存在该课程。关于如何用红宝石解决这个问题的建议?谢谢

4

3 回答 3

2

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

如果你真的想让一个方法不做任何事情,除非它是一周中的某一天,你可以做这样的事情:

return unless [ :tuesday?, :wednesday?, :thursday? ].any? { |day| Date.today.send(day) }
于 2012-10-16T18:58:53.303 回答
1

不要将日程安排混入课程本身。让班级严格处理执行任务的逻辑。

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

于 2012-10-16T19:07:03.997 回答
0

尽管您的问题尚不清楚,但这是我认为您确实有疑问的答案:

def perform
  return if [2,3,4].include? Date.today.wday
  puts "Your job!!!"
end
于 2012-10-16T18:59:11.020 回答