Ruby 如何将异常处理添加到现有的Rake任务中?
我想挽救由外部gem提供的rake任务引发的异常 理想情况下,我希望创建一个具有相同名称的rake任务,该任务调用原始任务并仅处理异常。比如:Ruby 如何将异常处理添加到现有的Rake任务中?,ruby,rake,rake-task,Ruby,Rake,Rake Task,我想挽救由外部gem提供的rake任务引发的异常 理想情况下,我希望创建一个具有相同名称的rake任务,该任务调用原始任务并仅处理异常。比如: original_task = Rake.application.tasks.find { |t| t.name == "original_namespace:original_task" } Rake::Task["original_namespace:original_task"].clear namespace :original_namespa
original_task = Rake.application.tasks.find { |t| t.name == "original_namespace:original_task" }
Rake::Task["original_namespace:original_task"].clear
namespace :original_namespace do
task original_task: :environment do
begin
original_task.invoke
rescue SystemExit
# do something
end
end
end
这不起作用,因为您似乎无法复制一个rake任务并将其保存在内存中。这可能是一种过激行为,但它应该起作用:
Rake::Task.prepend(Module.new do
def invoke(*args)
case name
when "original_namespace:original_task"
begin
super(*args)
rescue => e
Logger.warn("Task failed, rescued")
end
else super(*args)
end
end
end)
一旦在初始值设定项中的某个位置添加,它应使其自动拯救相应的异常。这将是一种过激行为,但它应能工作:
Rake::Task.prepend(Module.new do
def invoke(*args)
case name
when "original_namespace:original_task"
begin
super(*args)
rescue => e
Logger.warn("Task failed, rescued")
end
else super(*args)
end
end
end)
一旦在初始值设定项中的某个位置添加,它应该能够自动地拯救相应的异常。很抱歉,它不起作用。此代码(保存在初始值设定项中)甚至不会执行。然后发现在任务初始化过程中肯定加载了什么,并将代码放在那里。我对Rails有点了解。你可以把它放在耙子里。对不起,它没用。此代码(保存在初始值设定项中)甚至不会执行。然后发现在任务初始化过程中肯定加载了什么,并将代码放在那里。我对Rails有一点了解。你可以把它放在耙子里。