Class: Stepped::Registry
- Inherits:
-
Object
- Object
- Stepped::Registry
- Defined in:
- app/models/stepped/registry.rb
Class Attribute Summary collapse
-
.definitions ⇒ Object
readonly
Returns the value of attribute definitions.
-
.job_classes ⇒ Object
readonly
Returns the value of attribute job_classes.
Class Method Summary collapse
- .add(actor_class, action_name, outbound: false, timeout: nil, job: nil, &block) ⇒ Object
- .add_definition(actor_class, action_name, definition) ⇒ Object
- .append_after_callback(actor_class, action_name, *statuses, &block) ⇒ Object
- .find(actor_class, action_name) ⇒ Object
- .find_or_add(actor_class, action_name) ⇒ Object
- .key(klass) ⇒ Object
- .prepend_step(actor_class, action_name, &step_block) ⇒ Object
Class Attribute Details
.definitions ⇒ Object (readonly)
Returns the value of attribute definitions.
6 7 8 |
# File 'app/models/stepped/registry.rb', line 6 def definitions @definitions end |
.job_classes ⇒ Object (readonly)
Returns the value of attribute job_classes.
6 7 8 |
# File 'app/models/stepped/registry.rb', line 6 def job_classes @job_classes end |
Class Method Details
.add(actor_class, action_name, outbound: false, timeout: nil, job: nil, &block) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'app/models/stepped/registry.rb', line 12 def add(actor_class, action_name, outbound: false, timeout: nil, job: nil, &block) if job && @job_classes.exclude?(job) @job_classes.push job end add_definition actor_class, action_name, Stepped::Definition.new( actor_class:, action_name:, outbound:, timeout:, job:, block: ) end |
.add_definition(actor_class, action_name, definition) ⇒ Object
27 28 29 30 31 |
# File 'app/models/stepped/registry.rb', line 27 def add_definition(actor_class, action_name, definition) class_key = key actor_class @definitions[class_key] ||= Concurrent::Hash.new @definitions[class_key][action_name.to_s] = definition end |
.append_after_callback(actor_class, action_name, *statuses, &block) ⇒ Object
43 44 45 46 47 48 49 50 51 |
# File 'app/models/stepped/registry.rb', line 43 def append_after_callback(actor_class, action_name, *statuses, &block) definition = find_or_add actor_class, action_name unless definition.actor_class == actor_class definition = add_definition actor_class, action_name, definition.duplicate_as(actor_class) end definition.after(*statuses, &block) end |
.find(actor_class, action_name) ⇒ Object
53 54 55 56 57 58 59 60 |
# File 'app/models/stepped/registry.rb', line 53 def find(actor_class, action_name) actor_class.ancestors.each do |ancestor| definition = @definitions.dig key(ancestor), action_name.to_s return definition if definition end nil end |
.find_or_add(actor_class, action_name) ⇒ Object
62 63 64 |
# File 'app/models/stepped/registry.rb', line 62 def find_or_add(actor_class, action_name) find(actor_class, action_name) || add(actor_class, action_name) end |
.key(klass) ⇒ Object
8 9 10 |
# File 'app/models/stepped/registry.rb', line 8 def key(klass) "#{klass.name}/#{klass.object_id}" end |
.prepend_step(actor_class, action_name, &step_block) ⇒ Object
33 34 35 36 37 38 39 40 41 |
# File 'app/models/stepped/registry.rb', line 33 def prepend_step(actor_class, action_name, &step_block) definition = find_or_add actor_class, action_name unless definition.actor_class == actor_class definition = add_definition actor_class, action_name, definition.duplicate_as(actor_class) end definition.prepend_step(&step_block) end |