Sha256: 9f1b452619c1aa33098ff0e9e6b86e8f6f3ab5efd94dc17bea1c99fe2c3f085d

Contents?: true

Size: 805 Bytes

Versions: 4

Compression:

Stored size: 805 Bytes

Contents

module SchemaMonkey

  # The main manager for the monkey patches.  Singleton instance
  # created by SchemaMonkey.monkey

  class Monkey

    def initialize
      @client_map = {}
      @inserted = nil
      @inserted_dbm = nil
      Module.insert ::ActiveRecord::ConnectionAdapters::AbstractAdapter, SchemaMonkey::ActiveRecord::ConnectionAdapters::AbstractAdapter
    end

    def register(mod)
      @client_map[mod] ||= Client.new(mod).tap { |client|
        client.insert if @inserted
        client.insert(dbm: @inserted_dbm) if @inserted_dbm
      }
    end

    def insert(dbm: nil)
      insert if dbm and not @inserted # first do all non-dbm-specific insertions
      @client_map.values.each { |it| it.insert(dbm: dbm) }
      @inserted = true
      @inserted_dbm = dbm if dbm
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
schema_monkey-3.0.1 lib/schema_monkey/monkey.rb
schema_monkey-3.0.0 lib/schema_monkey/monkey.rb
schema_monkey-2.1.6 lib/schema_monkey/monkey.rb
schema_monkey-2.1.5 lib/schema_monkey/monkey.rb