module Rescue::Controller::ClassMethods
Public Instance Methods
rescue_associate(*klasses, &block)
click to toggle source
# File lib/rescue/controller.rb, line 26 def rescue_associate *klasses, &block options = klasses.extract_options! unless block_given? if options.has_key?(:with) if options[:with].is_a?(Integer) block = lambda {|e| send(Rescue.config.respond_name, options[:with], e) } elsif options[:with].is_a?(Proc) block = options[:with] end else raise ArgumentError, "Need a handler. Supply an options hash that has a :with key as the last argument." end end klasses.each do |klass| key = if klass.is_a?(Class) && klass <= Exception klass.name elsif klass.is_a?(String) || klass.is_a?(Symbol) if options.has_key?(:superclass) Rescue::Bind.define_error_class klass, options[:superclass] else Rescue::Bind.define_error_class klass, StandardError end klass else raise ArgumentError, "#{klass} is neither an Exception nor a String" end self.rescue_handlers += [[key, block]] end end
rescue_controller(clazz, *actions)
click to toggle source
# File lib/rescue/controller.rb, line 58 def rescue_controller clazz, *actions options = actions.extract_options! method_names = actions + options.keys name = clazz.name.underscore [:show, :edit, :new].each do |type| (options.delete(type)||[]).each do |name| method_names << name options[name] = { type: type } end end [:create, :update, :destroy].each do |type| options[type] ||= {} options[type][:params] ||= :"#{type}_params" end Action.define_call(self, clazz, :"@#{name}") Action.define(self, method_names, options) end