Glenn Gillen

New Error Handling in Rails 2.0

Rails 2.0 has added in a very cool way to trap errors without a bunch of messy nested rescue blocks or case statements.

The ticket that added all the magic is here. And it couldn't come too soon as I immediately had a project that needed it. Check out what I was looking at doing:

class AccountsController 

and now with the new exception handling:

class AccountsController  :overdrawn
  rescue_from Account::Suspended, :with => :suspended
  rescue_from ActiveRecord::RecordNotFound, :with => :not_found

  protected
    def overdrawn
      flash[:error] = "Sorry the account this transaction would make this account overdrawn" 
      redirect_to account_path(params[:account])
    end

    def suspended
      flash[:error] = "Sorry the account you are trying to use has been suspended, please contact customer services" 
      redirect_to account_path(params[:account])
    end

    def not_found
      flash[:error] = "No such account could be found" 
      redirect_to user_path(current_user)
    end
end

woohoo!! Much cleaner and more descriptive of my intentions

Glenn Gillen

I'm an advisor to, and investor in, early-stage tech startups. Beyond that I'm an incredibly fortunate husband and father. Working on a developer-facing tool or service? Thinking about starting one? Email me and let me know or come to one of our days to help make it a reality.