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, verbose = false) ⇒ Mysql2AdapterWithoutLock
constructor
A new instance of Mysql2AdapterWithoutLock.
- #lock_none_statement(sql) ⇒ Object
- #original_execute ⇒ Object
Constructor Details
#initialize(mysql2_adapter, verbose = false) ⇒ Mysql2AdapterWithoutLock
Returns a new instance of Mysql2AdapterWithoutLock.
9 10 11 12 13 14 15 |
# File 'lib/mysql_online_migrations/mysql2_adapter_without_lock.rb', line 9 def initialize(mysql2_adapter, verbose = false) @verbose = verbose 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
18 19 20 21 22 23 |
# File 'lib/mysql_online_migrations/mysql2_adapter_without_lock.rb', line 18 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
25 26 27 28 29 30 31 |
# File 'lib/mysql_online_migrations/mysql2_adapter_without_lock.rb', line 25 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" if @verbose "#{comma_delimiter} LOCK=NONE" end |
#original_execute ⇒ Object
17 |
# File 'lib/mysql_online_migrations/mysql2_adapter_without_lock.rb', line 17 alias_method :original_execute, :execute |