我希望我的一门课只在周二、周三和周四开课。我有以下内容:
class ReminderJob
def perform
begin
# Days to send: Tuesdays, Wednesdays, Thursdays
next Date.today.wday.instance_of?('2,3,4')
这个想法是,如果不是星期二,星期三,星期四,则存在该课程。关于如何用红宝石解决这个问题的建议?谢谢
如果您只想让任务仅在特定日期/时间运行,您可能想要安排一个cron 作业。
如果你真的想让一个方法不做任何事情,除非它是一周中的某一天,你可以做这样的事情:
return unless [ :tuesday?, :wednesday?, :thursday? ].any? { |day| Date.today.send(day) }
不要将日程安排混入课程本身。让班级严格处理执行任务的逻辑。
使用 cron 进行调度。使用when gem 创建cron 作业。您可以指定它只应在一周中的某些日子、一天中的某些时间等执行。
尽管您的问题尚不清楚,但这是我认为您确实有疑问的答案:
def perform
return if [2,3,4].include? Date.today.wday
puts "Your job!!!"
end