Sha256: 15a5a2229d0a9ef41a9636a1252e96df1bd00c687d0b86dbab43ceec07f99b4d
Contents?: true
Size: 1.78 KB
Versions: 4
Compression:
Stored size: 1.78 KB
Contents
module AASM module Persistence class << self 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_persistence :active_record include_persistence base, :active_record elsif hierarchy.include?("Mongoid::Document") require_persistence :mongoid include_persistence base, :mongoid elsif hierarchy.include?("MongoMapper::Document") require_persistence :mongo_mapper include_persistence base, :mongo_mapper elsif hierarchy.include?("Sequel::Model") require_persistence :sequel include_persistence base, :sequel elsif hierarchy.include?("Dynamoid::Document") require_persistence :dynamoid include_persistence base, :dynamoid elsif hierarchy.include?("Redis::Objects") require_persistence :redis include_persistence base, :redis elsif hierarchy.include?("CDQManagedObject") include_persistence base, :core_data_query else include_persistence base, :plain end end private def require_persistence(type) require File.join(File.dirname(__FILE__), 'persistence', "#{type}_persistence") end def include_persistence(base, type) base.send(:include, constantize("#{capitalize(type)}Persistence")) end def capitalize(string_or_symbol) string_or_symbol.to_s.split('_').map {|segment| segment[0].upcase + segment[1..-1]}.join('') end def constantize(string) AASM::Persistence.const_get(string) end end # class << self end end # AASM
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
aasm-4.11.1 | lib/aasm/persistence.rb |
aasm-4.11.0 | lib/aasm/persistence.rb |
aasm-4.10.1 | lib/aasm/persistence.rb |
aasm-4.10.0 | lib/aasm/persistence.rb |