Class: ActiveRecord::ConnectionAdapters::Mysql2AdapterWithoutLock
- Inherits:
-
Mysql2Adapter
- Object
- Mysql2Adapter
- ActiveRecord::ConnectionAdapters::Mysql2AdapterWithoutLock
- Defined in:
- lib/mysql_online_migrations/mysql2_adapter_without_lock.rb
Constant Summary collapse
- OPTIMIZABLE_DDL_REGEX =
/^(alter|create (unique )? ?index|drop index) /i
- DDL_WITH_COMMA_REGEX =
/^alter /i
- DDL_WITH_LOCK_NONE_REGEX =
/ LOCK=NONE\s*$/i
Instance Method Summary collapse
- #execute(sql, name = nil) ⇒ Object
-
#initialize(mysql2_adapter) ⇒ Mysql2AdapterWithoutLock
constructor
A new instance of Mysql2AdapterWithoutLock.
- #lock_none_statement(sql) ⇒ Object
- #original_execute ⇒ Object
Constructor Details
#initialize(mysql2_adapter) ⇒ Mysql2AdapterWithoutLock
Returns a new instance of Mysql2AdapterWithoutLock.
8 9 10 11 12 13 |
# File 'lib/mysql_online_migrations/mysql2_adapter_without_lock.rb', line 8 def initialize(mysql2_adapter) params = [:@connection, :@logger, :@connection_options, :@config].map do |sym| mysql2_adapter.instance_variable_get(sym) end super(*params) end |
Instance Method Details
#execute(sql, name = nil) ⇒ Object
16 17 18 19 20 21 |
# File 'lib/mysql_online_migrations/mysql2_adapter_without_lock.rb', line 16 def execute(sql, name = nil) if sql =~ OPTIMIZABLE_DDL_REGEX sql = "#{sql} #{lock_none_statement(sql)}" end original_execute(sql, name) end |
#lock_none_statement(sql) ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/mysql_online_migrations/mysql2_adapter_without_lock.rb', line 23 def lock_none_statement(sql) return "" unless ActiveRecord::Base.mysql_online_migrations return "" if sql =~ DDL_WITH_LOCK_NONE_REGEX comma_delimiter = (sql =~ DDL_WITH_COMMA_REGEX ? "," : "") puts "ONLINE MIGRATION" "#{comma_delimiter} LOCK=NONE" end |
#original_execute ⇒ Object
15 |
# File 'lib/mysql_online_migrations/mysql2_adapter_without_lock.rb', line 15 alias_method :original_execute, :execute |