[英]Use begin and rescue in select syntax
我想选择以下代码中不会出现异常的task
,我该如何获得它?
如果任务状态包含pid,并且进程正在我的系统上运行,则不会获取异常。
这段代码在我的辅助函数中,我应该将某些函数移至Model吗? (我正在使用ROR)
def sanitize_running_tasks(tasks)
sanitized_tasks = tasks.select do |task|
begin
Process.kill 0, task.status.to_i
rescue Exception => e
task.status = :FAIL
task.save
end
end
end
请考虑在任务上使用kill
方法。
def sanitize_running_tasks(tasks)
tasks.select &:kill
end
class Task
def kill
Process.kill 0, status.to_i
true
rescue Exception => e
mark_failed!
false
end
def mark_failed!
update_attributes status: :FAIL
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.