# Enables methods like find!(:all, …), find_by_username!(…) that
# raise ActiveRecord::RecordNotFound for empty results.

module RaisingFinders
  def method_missing(name, *args)
    return super unless name.to_s =~ /^(find(_.+)?)!$/
    returning send($1, *args) do |result|
      raise ActiveRecord::RecordNotFound if result.blank?
    end
  end
end

class << ActiveRecord::Base
  include RaisingFinders
end

