Module: Rosette::Integrations::Integratable
- Included in:
- Core::Configurator, Core::RepoConfig
- Defined in:
- lib/rosette/integrations/integratable.rb
Overview
Intended to be mixed in to classes that can be integrated with. Provides methods to add and retrieve integration configs as well as apply configured integrations to the parent.
Instance Method Summary collapse
-
#add_integration(integration_id) {|config| ... } ⇒ void
Add an integration.
-
#apply_integrations(obj) ⇒ void
Applies the integrations to the given object.
-
#get_integration(integration_id) ⇒ nil, Object
Retrieve the integration config by id.
-
#integrations ⇒ Array
Returns the current list of integration configs.
Instance Method Details
#add_integration(integration_id) {|config| ... } ⇒ void
This method returns an undefined value.
Add an integration. Yields an instance of the integration’s configurator object to the given block.
24 25 26 27 |
# File 'lib/rosette/integrations/integratable.rb', line 24 def add_integration(integration_id, &block) klass = Rosette::Core::IntegrationId.resolve(integration_id) integrations << klass.configure(&block) end |
#apply_integrations(obj) ⇒ void
This method returns an undefined value.
Applies the integrations to the given object.
48 49 50 51 52 53 54 |
# File 'lib/rosette/integrations/integratable.rb', line 48 def apply_integrations(obj) integrations.each do |integration| if integration.integrates_with?(obj) integration.integrate(obj) end end end |
#get_integration(integration_id) ⇒ nil, Object
Retrieve the integration config by id.
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/rosette/integrations/integratable.rb', line 33 def get_integration(integration_id) klass = Rosette::Core::IntegrationId.resolve(integration_id) if klass integrations.find do |integration| integration.is_a?(klass) end end rescue ArgumentError end |
#integrations ⇒ Array
Returns the current list of integration configs.
13 14 15 |
# File 'lib/rosette/integrations/integratable.rb', line 13 def integrations @integrations ||= [] end |