使用ruby 1.9.3和rails 3.1。我需要跟踪项目中的所有rake任务,无论rake任务是否成功。为此,我使用了Rakefile,它将在rake任务开始时创建一个条目,最后它将更新该特定rake任务的结束时间。这是通过以下代码在rakefile
中完成的 start_time = Time.current
require 'tasks/delayed_tasks'
rake_info = Rake.application.top_level_tasks.join
Rake::Task["create_audit_entry"].invoke("#{rake_info}","#{start_time}")
at_exit { Rake::Task["update_audit_entry"].invoke("#{rake_info}","#{start_time}") if $!.nil?
但问题发生在任何rake任务抛出异常时,需要在遇到错误时更新log_table。由于存在太多的rake任务,更新rake文件是一个大问题,有没有办法在rakefile的任何rake任务中发现异常,而不是更新所有rake任务。