我需要在初始化后几分钟更改类的属性.我试图在函数内部使用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 }
