mirror of
https://github.com/aasm/aasm
synced 2023-03-27 23:22:41 -04:00
little persistence refactoring to improve readability
This commit is contained in:
parent
233d99b906
commit
e32c5dd65d
2 changed files with 23 additions and 15 deletions
|
@ -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…
Add table
Add a link
Reference in a new issue