初始化几分钟后,我需要更改一个类的属性。我试图在函数中使用sleep
,但它延迟了所有内容的执行:
active = true
def deactivate
sleep 120
puts 'deactivate'
active = false
end
deactivate
puts active
我希望发生的情况是
true
首先注销,然后两分钟后deactivate
将注销。但是,发生的事情是deactivate
,然后在两分钟后注销false
。在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 }