我有一个/lib/tasks/send_mailer_job.rb文件。
在制作时,我希望该文件每5分钟运行一次。然而,在开发时,等待5分钟来测试一个变化正在减慢我的速度,所以我希望这是1分钟。最近我刚刚更新了代码中的变量但是容易出错,因为我可以签入错误的#并终止生产服务器。如何根据环境设置该变量
我有以下内容:
records = Stuff.find(:all, :conditions => ["last_activity_at <= ?", (Time.now - 500)])
..... 1.minute.from_now
根据rails环境,将这两个#,500和1.minute.form_now变为可变的正确方法是什么?对于开发我想要更短的#s而不是生产和放大分期。
由于
答案 0 :(得分:3)
使用Rails.env
。示例如下。
class Stuff < ActiveRecord::Base
def self.latest
time = Rails.env == "production" ? 5.minutes.from_now : 1.minute.from_now
self.find(:all, :conditions => ["last_activity_at <= ?", time])
end
end
答案 1 :(得分:1)
将时间戳计算放入使用Rails.env选择正确延迟的方法中:
class Stuff < ActiveRecord::Base
def self.cutoff_time
if Rails.env.production?
5.minutes.ago
else
1.minute.ago
end
end
end
然后使用此方法代替Time.now - 5.minutes
,无论您需要计算截止时间。将它放在这样的单独方法中也有助于测试,因为您可以轻松地将其返回值存根以测试各种场景。