### Home Classes Methods

### In Files

- lib/state_machine/integrations/base.rb

### Methods

- #available?
- #extended
- #integration_name
- #locale_path
- #matches?
- #matches_ancestors?
- #matching_ancestors
- #version
- #versions

### Files

- LICENSE

### Class/Module Index

Quicksearch

- StateMachine
- StateMachine::AllMatcher
- StateMachine::Assertions
- StateMachine::AttributeTransitionCollection
- StateMachine::BlacklistMatcher
- StateMachine::Branch
- StateMachine::Callback
- StateMachine::ClassMethods
- StateMachine::Error
- StateMachine::EvalHelpers
- StateMachine::Event
- StateMachine::EventCollection
- StateMachine::Graph
- StateMachine::InstanceMethods
- StateMachine::IntegrationNotFound
- StateMachine::Integrations
- StateMachine::Integrations::ActiveModel
- StateMachine::Integrations::ActiveModel::Observer
- StateMachine::Integrations::ActiveModel::ObserverUpdate
- StateMachine::Integrations::ActiveRecord
- StateMachine::Integrations::Base
- StateMachine::Integrations::Base::ClassMethods
- StateMachine::Integrations::DataMapper
- StateMachine::Integrations::DataMapper::Observer
- StateMachine::Integrations::MongoMapper
- StateMachine::Integrations::Mongoid
- StateMachine::Integrations::Sequel
- StateMachine::InvalidEvent
- StateMachine::InvalidParallelTransition
- StateMachine::InvalidTransition
- StateMachine::LoopbackMatcher
- StateMachine::Machine
- StateMachine::MachineCollection
- StateMachine::MacroMethods
- StateMachine::Matcher
- StateMachine::MatcherHelpers
- StateMachine::NodeCollection
- StateMachine::Path
- StateMachine::PathCollection
- StateMachine::RailsEngine
- StateMachine::State
- StateMachine::StateCollection
- StateMachine::StateContext
- StateMachine::Transition
- StateMachine::TransitionCollection
- StateMachine::WhitelistMatcher
- StateMachine::YARD
- StateMachine::YARD::Handlers
- StateMachine::YARD::Handlers::Base
- StateMachine::YARD::Handlers::Event
- StateMachine::YARD::Handlers::Machine
- StateMachine::YARD::Handlers::State
- StateMachine::YARD::Handlers::Transition
- Object

No matching classes.

# StateMachine::Integrations::Base::ClassMethods

### Attributes

defaults[R]

The default options to use for state machines using this integration

### Public Instance Methods

available?() click to toggle source

Whether this integration is available for the current library. This is only true if the ORM that the integration is for is currently defined.

    # File lib/state_machine/integrations/base.rb, line 23
    def available?
      matching_ancestors.any? && Object.const_defined?(matching_ancestors[0].split('::')[0])
    end

extended(base) click to toggle source

Extends the given object with any version overrides that are currently active

    # File lib/state_machine/integrations/base.rb, line 86
    def extended(base)
      versions.each do |version|
         base.extend(version) if version.active?
      end
    end

integration_name() click to toggle source

The name of the integration

    # File lib/state_machine/integrations/base.rb, line 10
    def integration_name
      @integration_name ||= begin
        name = self.name.split('::').last
        name.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
        name.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
        name.downcase!
        name.to_sym
      end
    end

locale_path() click to toggle source

The path to the locale file containing translations for this integration. This file will only exist for integrations that actually support i18n.

    # File lib/state_machine/integrations/base.rb, line 79
    def locale_path
      path = "#{File.dirname(__FILE__)}/#{integration_name}/locale.rb"
      path if File.exists?(path)
    end

matches?(klass) click to toggle source

Whether the integration should be used for the given class.

    # File lib/state_machine/integrations/base.rb, line 33
    def matches?(klass)
      matches_ancestors?(klass.ancestors.map {|ancestor| ancestor.name})
    end

matches_ancestors?(ancestors) click to toggle source

Whether the integration should be used for the given list of ancestors.

    # File lib/state_machine/integrations/base.rb, line 38
    def matches_ancestors?(ancestors)
      (ancestors & matching_ancestors).any?
    end

matching_ancestors() click to toggle source

The list of ancestor names that cause this integration to matched.

    # File lib/state_machine/integrations/base.rb, line 28
    def matching_ancestors
      []
    end

version(name, &block) click to toggle source

Creates a new version override for an integration. When this integration is activated, each version that is marked as active will also extend the integration.

## Example

    module StateMachine
      module Integrations
        module ORMLibrary
          version '0.2.x - 0.3.x' do
            def self.active?
              ::ORMLibrary::VERSION >= '0.2.0' && ::ORMLibrary::VERSION < '0.4.0'
            end

            def invalidate(object, attribute, message, values = [])
              # Override here...
            end
          end
        end
      end
    end

In the above example, a version override is defined for the ORMLibrary integration when the version is between 0.2.x and 0.3.x.

    # File lib/state_machine/integrations/base.rb, line 71
    def version(name, &block)
      versions << mod = Module.new(&block)
      mod
    end

versions() click to toggle source

Tracks the various version overrides for an integration

    # File lib/state_machine/integrations/base.rb, line 43
    def versions
      @versions ||= []
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.