我有一个像这样的rake任务:
task :update_all => :environment do
codes = get_all_codes
codes.each{ |code| find_or_create_from_my_data(code) }
end
有时更新失败,所以我想知道哪些代码失败了。 为此我写了这样的话:
task :update_all => :environment do
begin
codes = get_all_codes
@code
codes.each{ |code| @code = code; find_or_create_from_my_data(code) }
rescue
p @code
end
end
它工作正常,但我认为它有点多余。我怎样才能更有效地写作?
答案 0 :(得分:1)
e.message将显示哪些代码失败以及原因
task :update_all => :environment do
codes = get_all_codes
codes.each{ |code| find_or_create_from_my_data(code) }
rescue => e
puts "(#{e.message})"
end
答案 1 :(得分:1)
这个怎么样:
task :update_all => :environment do
get_all_codes.each do |code|
begin
find_or_create_from_my_data(code)
rescue
p code
end
end
end
这样,即使一个代码失败,也会将其打印出来并转移到其他代码而不是提前中止。