Sha256: 89e7b2c55b574fa81ef464a98c68ab146fcd1b3fc4655a1f44e1233e328eb8f0
Contents?: true
Size: 1.91 KB
Versions: 4
Compression:
Stored size: 1.91 KB
Contents
require 'active_record' require 'chrono_model/conversions' require 'chrono_model/patches' require 'chrono_model/adapter' require 'chrono_model/time_machine' require 'chrono_model/time_gate' require 'chrono_model/version' module ChronoModel class Error < ActiveRecord::ActiveRecordError #:nodoc: end # Performs structure upgrade. # def self.upgrade! connection = ActiveRecord::Base.connection unless connection.is_a?(ChronoModel::Adapter) raise ChronoModel::Error, "This database connection is not a ChronoModel::Adapter" end connection.chrono_upgrade! end # Returns an Hash keyed by table name of ChronoModels. # Computed upon inclusion of the +TimeMachine+ module. # def self.history_models @_history_models||= {} end end if defined?(Rails) require 'chrono_model/railtie' end ActiveRecord::Base.instance_eval do # Checks whether this Active Recoed model is backed by a temporal table # def chrono? connection.is_chrono?(table_name) end end # Hooks into Association#scope to pass the As-Of time automatically # to methods that load associated ChronoModel records. # ActiveRecord::Associations::Association.instance_eval do prepend ChronoModel::Patches::Association end # Hooks into Relation#build_arel to use :joins on your ChronoModels # and join data from associated records As-Of time. # ActiveRecord::Relation.instance_eval do prepend ChronoModel::Patches::Relation end # Hooks in two points of the AR Preloader to preload As-Of time records of # associated ChronoModels. is used by .includes, .preload and .eager_load. # ActiveRecord::Associations::Preloader.instance_eval do prepend ChronoModel::Patches::Preloader end ActiveRecord::Associations::Preloader::Association.instance_eval do prepend ChronoModel::Patches::Preloader::Association end if defined?(Rails::DBConsole) Rails::DBConsole.instance_eval do prepend ChronoModel::Patches::DBConsole end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
chrono_model-1.2.2 | lib/chrono_model.rb |
chrono_model-1.2.1 | lib/chrono_model.rb |
chrono_model-1.2.0 | lib/chrono_model.rb |
chrono_model-1.1.0 | lib/chrono_model.rb |