Module: StateMachine::Integrations
- Defined in:
- lib/state_machine/integrations.rb,
lib/state_machine/integrations/base.rb,
lib/state_machine/integrations/sequel.rb,
lib/state_machine/integrations/mongoid.rb,
lib/state_machine/integrations/data_mapper.rb,
lib/state_machine/integrations/active_model.rb,
lib/state_machine/integrations/mongo_mapper.rb,
lib/state_machine/integrations/active_record.rb,
lib/state_machine/integrations/sequel/versions.rb,
lib/state_machine/integrations/mongoid/versions.rb,
lib/state_machine/integrations/data_mapper/observer.rb,
lib/state_machine/integrations/data_mapper/versions.rb,
lib/state_machine/integrations/active_model/observer.rb,
lib/state_machine/integrations/active_model/versions.rb,
lib/state_machine/integrations/mongo_mapper/versions.rb,
lib/state_machine/integrations/active_record/versions.rb,
lib/state_machine/integrations/active_model/observer_update.rb
Overview
:nodoc:
Defined Under Namespace
Modules: ActiveModel, ActiveRecord, Base, DataMapper, MongoMapper, Mongoid, Sequel
Class Method Summary collapse
-
.all ⇒ Object
Gets a list of all of the available integrations for use.
-
.find_by_name(name) ⇒ Object
Finds an integration with the given name.
-
.match(klass) ⇒ Object
Attempts to find an integration that matches the given class.
-
.match_ancestors(ancestors) ⇒ Object
Attempts to find an integration that matches the given list of ancestors.
Class Method Details
.all ⇒ Object
Gets a list of all of the available integrations for use. This will always list the ActiveModel integration last.
Example
StateMachine::Integrations.all
# => [StateMachine::Integrations::ActiveRecord, StateMachine::Integrations::DataMapper
# StateMachine::Integrations::Mongoid, StateMachine::Integrations::MongoMapper,
# StateMachine::Integrations::Sequel, StateMachine::Integrations::ActiveModel]
116 117 118 119 |
# File 'lib/state_machine/integrations.rb', line 116 def self.all constants = self.constants.map {|c| c.to_s}.select {|c| c != 'ActiveModel'}.sort << 'ActiveModel' constants.map {|c| const_get(c)} end |
.find_by_name(name) ⇒ Object
Finds an integration with the given name. If the integration cannot be found, then a NameError exception will be raised.
Examples
StateMachine::Integrations.find_by_name(:active_record) # => StateMachine::Integrations::ActiveRecord
StateMachine::Integrations.find_by_name(:active_model) # => StateMachine::Integrations::ActiveModel
StateMachine::Integrations.find_by_name(:data_mapper) # => StateMachine::Integrations::DataMapper
StateMachine::Integrations.find_by_name(:mongoid) # => StateMachine::Integrations::Mongoid
StateMachine::Integrations.find_by_name(:mongo_mapper) # => StateMachine::Integrations::MongoMapper
StateMachine::Integrations.find_by_name(:sequel) # => StateMachine::Integrations::Sequel
StateMachine::Integrations.find_by_name(:invalid) # => StateMachine::IntegrationNotFound: :invalid is an invalid integration
103 104 105 |
# File 'lib/state_machine/integrations.rb', line 103 def self.find_by_name(name) all.detect {|integration| integration.integration_name == name} || raise(IntegrationNotFound.new(name)) end |
.match(klass) ⇒ Object
Attempts to find an integration that matches the given class. This will look through all of the built-in integrations under the StateMachine::Integrations namespace and find one that successfully matches the class.
Examples
class Vehicle
end
class ActiveModelVehicle
include ActiveModel::Observing
include ActiveModel::Validations
end
class ActiveRecordVehicle < ActiveRecord::Base
end
class DataMapperVehicle
include DataMapper::Resource
end
class MongoidVehicle
include Mongoid::Document
end
class MongoMapperVehicle
include MongoMapper::Document
end
class SequelVehicle < Sequel::Model
end
StateMachine::Integrations.match(Vehicle) # => nil
StateMachine::Integrations.match(ActiveModelVehicle) # => StateMachine::Integrations::ActiveModel
StateMachine::Integrations.match(ActiveRecordVehicle) # => StateMachine::Integrations::ActiveRecord
StateMachine::Integrations.match(DataMapperVehicle) # => StateMachine::Integrations::DataMapper
StateMachine::Integrations.match(MongoidVehicle) # => StateMachine::Integrations::Mongoid
StateMachine::Integrations.match(MongoMapperVehicle) # => StateMachine::Integrations::MongoMapper
StateMachine::Integrations.match(SequelVehicle) # => StateMachine::Integrations::Sequel
75 76 77 |
# File 'lib/state_machine/integrations.rb', line 75 def self.match(klass) all.detect {|integration| integration.matches?(klass)} end |
.match_ancestors(ancestors) ⇒ Object
Attempts to find an integration that matches the given list of ancestors. This will look through all of the built-in integrations under the StateMachine::Integrations namespace and find one that successfully matches one of the ancestors.
Examples
StateMachine::Integrations.match([]) # => nil
StateMachine::Integrations.match(['ActiveRecord::Base') # => StateMachine::Integrations::ActiveModel
87 88 89 |
# File 'lib/state_machine/integrations.rb', line 87 def self.match_ancestors(ancestors) all.detect {|integration| integration.matches_ancestors?(ancestors)} end |