0.0
No commit activity in last 3 years
No release in over 3 years
Rescue multiple exceptions when enumerating over Enumerable or ActiveRecord objects
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

 Project Readme

rescue_each

Rescue multiple exceptions when enumerating over Enumerable or ActiveRecord objects.

Say you have a batch rake task which runs from cron which consists of many independent tasks ran in a loop. These tasks could be anything from updating cached database entries to file conversions.

Once of these tasks fails, perhaps there's a corrupt image. Normally this would mean the entire batch task fails. But with rescue_each the other items can be processed and any errors will be re-raised at the end to be caught by your cron script.

Installation

You can install from Gemcutter by running:

sudo gem install rescue_each

Usage

Basics

Simply replace your each calls with rescue_each:

BatchTasks.all.each &:process!

transforms into:

BatchTasks.all.rescue_each &:process!

Verbosity

rescue_each also supports a option to output error summary info to stderr during the loop:

(1..5).rescue_each :stderr => true do |i|
  sleep 1
  raise 'example'
end

You'll probably find this handy if your batch task has its own status output as this mode will output an error summary inline.

Other Methods

rescue_each also provides proxies for map, each_with_index, find_each and find_in_batches. You can also use rescue_each on any method taking a block by calling rescue_send:

odds = (1..5).rescue_send(:reject) { |i| i%2 == 0 }

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Copyright

Copyright (c) 2010 Jason Weathered. See LICENSE for details.