Module: EasyCallbacks
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/easy_callbacks.rb,
lib/easy_callbacks/version.rb,
lib/easy_callbacks/models/callback.rb,
lib/easy_callbacks/utils/validator.rb,
lib/easy_callbacks/utils/serializer.rb,
lib/easy_callbacks/models/target_class.rb,
lib/easy_callbacks/dsls/target_classes_dsl.rb,
lib/easy_callbacks/repositories/base_repository.rb,
lib/easy_callbacks/repositories/callbacks_repository.rb,
lib/easy_callbacks/repositories/target_classes_repository.rb
Defined Under Namespace
Modules: Dsls, Models, Repositories, Utils
Constant Summary
collapse
- VERSION =
'1.0.1'
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.target_classes_repository=(value) ⇒ Object
Sets the attribute target_classes_repository
32
33
34
|
# File 'lib/easy_callbacks.rb', line 32
def target_classes_repository=(value)
@target_classes_repository = value
end
|
Class Method Details
34
35
36
37
|
# File 'lib/easy_callbacks.rb', line 34
def configure(target_class, &cfg_block)
target_class_instance = target_classes_repository.find_or_add target_class
Dsls::TargetClassesDsl.new(target_class_instance).instance_eval &cfg_block
end
|
.define_callback_details_method(additional_options, callback, target_class_instance) ⇒ Object
48
49
50
51
52
53
54
55
|
# File 'lib/easy_callbacks.rb', line 48
def define_callback_details_method(additional_options, callback, target_class_instance)
target_class_instance.target_class.send :define_method, :callback_details do
callback_details = Utils::Serializer.to_h(
callback, %w(callback_type target_method_name callback_method_name callback_block)
).merge(target_class: target_class_instance.target_class)
additional_options ? callback_details.merge(additional_options) : callback_details
end
end
|
.execute_callbacks(context, target_class_instance, callback_type, target_method_name, additional_options, call_args, &call_block) ⇒ Object
39
40
41
42
43
44
45
46
|
# File 'lib/easy_callbacks.rb', line 39
def execute_callbacks(context, target_class_instance, callback_type, target_method_name, additional_options, call_args, &call_block)
validate_target_class_instance target_class_instance
target_class_instance.get_callbacks_for(callback_type, target_method_name).each do |callback|
define_callback_details_method additional_options, callback, target_class_instance
proc = callback.callback_block
proc.nil? ? context.send(callback.callback_method_name, *call_args, &call_block) : context.instance_eval(&proc)
end
end
|