module MysqlOnlineMigrations

Attributes

verbose[RW]

Public Class Methods

prepended(base) click to toggle source
# File lib/mysql_online_migrations.rb, line 13
def self.prepended(base)
  ActiveRecord::Base.send(:class_attribute, :mysql_online_migrations, :instance_writer => false)
  ActiveRecord::Base.send("mysql_online_migrations=", true)
end

Public Instance Methods

connection() click to toggle source
Calls superclass method
# File lib/mysql_online_migrations.rb, line 18
def connection
  original_connection = super
  adapter_mode = original_connection.class.name == "ActiveRecord::ConnectionAdapters::Mysql2Adapter"

  @original_adapter ||= if adapter_mode
    original_connection
  else
    original_connection.instance_variable_get(:@delegate)
  end

  @no_lock_adapter ||= ActiveRecord::ConnectionAdapters::Mysql2AdapterWithoutLock.new(@original_adapter, MysqlOnlineMigrations.verbose)

  if adapter_mode
    @no_lock_adapter
  else
    original_connection.instance_variable_set(:@delegate, @no_lock_adapter)
    original_connection
  end
end
with_lock() { || ... } click to toggle source
# File lib/mysql_online_migrations.rb, line 38
def with_lock
  original_value = ActiveRecord::Base.mysql_online_migrations
  ActiveRecord::Base.mysql_online_migrations = false
  yield
  ActiveRecord::Base.mysql_online_migrations = original_value
end