module Tagful::ClassMethods
Public Instance Methods
tagful(method_id, error_module_or_class = nil)
click to toggle source
Calls superclass method
# File lib/tagful.rb, line 17 def tagful(method_id, error_module_or_class = nil) visibility = case when public_method_defined?(method_id) :public when protected_method_defined?(method_id) :protected when private_method_defined?(method_id) :private else raise ::Tagful::NoMethod end if error_module_or_class.nil? if @tagful_error_module_or_class.is_a?(Class) error_class = @tagful_error_module_or_class else error_module = @tagful_error_module_or_class error_module ||= DEFAULT_ERROR_MODULE_NAME end else if error_module_or_class.is_a?(Class) error_class = error_module_or_class else error_module = error_module_or_class end end if error_class.nil? && error_module == DEFAULT_ERROR_MODULE_NAME error_module = class_eval(<<-CODE) unless defined?(#{error_module}) module #{error_module}; end end #{error_module} CODE end tagful_methods_module = class_eval('module TagfulMethods; self; end') tagful_methods_module.module_eval do if error_class define_method(method_id) do |*args, &block| begin super(*args, &block) rescue => e raise error_class, e.message end end else define_method(method_id) do |*args, &block| begin super(*args, &block) rescue => e e.extend(error_module) and raise end end end send visibility, method_id end class_eval { prepend(tagful_methods_module) } method_id end
tagful_with(error_module_or_class)
click to toggle source
# File lib/tagful.rb, line 13 def tagful_with(error_module_or_class) @tagful_error_module_or_class = error_module_or_class end