Class: LolDba::MigrationMocker

Inherits:
Object
  • Object
show all
Defined in:
lib/lol_dba/sql_migrations/migration_mocker.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(writer) ⇒ MigrationMocker



3
4
5
# File 'lib/lol_dba/sql_migrations/migration_mocker.rb', line 3

def initialize(writer)
  @writer = writer
end

Class Method Details

.connectionObject



27
28
29
# File 'lib/lol_dba/sql_migrations/migration_mocker.rb', line 27

def self.connection
  ActiveRecord::Base.connection
end

Instance Method Details

#methods_to_modifyObject



35
36
37
# File 'lib/lol_dba/sql_migrations/migration_mocker.rb', line 35

def methods_to_modify
  %i[execute do_execute rename_column change_column column_for tables indexes select_all] & self.class.connection.methods
end

#redefine_connection_method(method, &block) ⇒ Object



31
32
33
# File 'lib/lol_dba/sql_migrations/migration_mocker.rb', line 31

def redefine_connection_method(method, &block)
  self.class.connection.class.send(:define_method, method, block)
end

#redefine_migration_methodsObject



7
8
9
10
11
12
13
# File 'lib/lol_dba/sql_migrations/migration_mocker.rb', line 7

def redefine_migration_methods
  save_original_methods
  
  redefine_execute_methods(:execute)
  # needed for activerecord-sqlserver-adapter
  redefine_execute_methods(:do_execute)
end

#reset_methodsObject



15
16
17
18
19
20
21
22
23
# File 'lib/lol_dba/sql_migrations/migration_mocker.rb', line 15

def reset_methods
  methods_to_modify.each do |method_name|
    begin
      connection_class.send(:alias_method, method_name, "orig_#{method_name}".to_sym)
    rescue StandardError
      nil
    end
  end
end