little persistence refactoring to improve readability
This commit is contained in:
parent
233d99b906
commit
e32c5dd65d
|
@ -3,7 +3,7 @@ module AASM
|
|||
def self.included(base) #:nodoc:
|
||||
base.extend AASM::ClassMethods
|
||||
AASM::StateMachine[base] ||= AASM::StateMachine.new('')
|
||||
AASM::Persistence.set_persistence(base)
|
||||
AASM::Persistence.load_persistence(base)
|
||||
super
|
||||
end
|
||||
|
||||
|
|
|
@ -1,20 +1,28 @@
|
|||
module AASM
|
||||
module Persistence
|
||||
# Checks to see this class or any of it's superclasses inherit from
|
||||
# ActiveRecord::Base and if so includes ActiveRecordPersistence
|
||||
def self.set_persistence(base)
|
||||
# Use a fancier auto-loading thingy, perhaps. When there are more persistence engines.
|
||||
hierarchy = base.ancestors.map {|klass| klass.to_s}
|
||||
class << self
|
||||
|
||||
require File.join(File.dirname(__FILE__), 'persistence', 'base')
|
||||
require File.join(File.dirname(__FILE__), 'persistence', 'read_state')
|
||||
if hierarchy.include?("ActiveRecord::Base")
|
||||
require File.join(File.dirname(__FILE__), 'persistence', 'active_record_persistence')
|
||||
base.send(:include, AASM::Persistence::ActiveRecordPersistence)
|
||||
elsif hierarchy.include?("Mongoid::Document")
|
||||
require File.join(File.dirname(__FILE__), 'persistence', 'mongoid_persistence')
|
||||
base.send(:include, AASM::Persistence::MongoidPersistence)
|
||||
def load_persistence(base)
|
||||
# Use a fancier auto-loading thingy, perhaps. When there are more persistence engines.
|
||||
hierarchy = base.ancestors.map {|klass| klass.to_s}
|
||||
|
||||
if hierarchy.include?("ActiveRecord::Base")
|
||||
require_files_for('active_record_persistence')
|
||||
base.send(:include, AASM::Persistence::ActiveRecordPersistence)
|
||||
elsif hierarchy.include?("Mongoid::Document")
|
||||
require_files_for('mongoid_persistence')
|
||||
base.send(:include, AASM::Persistence::MongoidPersistence)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def require_files_for(persistence)
|
||||
require File.join(File.dirname(__FILE__), 'persistence', 'base')
|
||||
require File.join(File.dirname(__FILE__), 'persistence', 'read_state')
|
||||
require File.join(File.dirname(__FILE__), 'persistence', persistence)
|
||||
end
|
||||
|
||||
end # class << self
|
||||
end
|
||||
end # AASM
|
||||
|
|
Loading…
Reference in New Issue