我需要在初始化后几分钟更改类的属性.我试图在函数内部使用sleep,但它延迟了所有事情的执行: active = truedef deactivate sleep 120 puts 'deactivate' active = falseenddeactivateputs active 我希望会发生的
active = true def deactivate sleep 120 puts 'deactivate' active = false end deactivate puts active
我希望会发生的事情是真的会先退出然后两分钟后停用会记录.但是,发生的情况是停用,然后在两分钟后错误注销.
在JavaScript中我会做类似的事情:
var active = true; setTimeout(function(){ console.log('deactivate'); active = false; },120000); console.log(active);对于此任务看起来有点过分,但您可以使用 delayed_job异步运行未来时间的任务.
def deactivate puts 'deactivate' active = false end active = true handle_asynchronously :deactivate, :run_at => Proc.new { 2.minutes.from_now }