Sha256: 2112c924dfff2b007da676d2c98f3acc2ee55e53be0cd2432fd905ed5f83035a
Contents?: true
Size: 1.66 KB
Versions: 1
Compression:
Stored size: 1.66 KB
Contents
module PedantMysql2 class << self def capture_warnings warnings = backup_warnings setup_capture yield captured_warnings ensure restore_warnings(warnings) end def raise_warnings! self.on_warning = nil end def silence_warnings! self.on_warning = lambda{ |warning| } end def ignore(*matchers) self.whitelist.concat(matchers.flatten) end def warn(warning) return if ignored?(warning) if on_warning on_warning.call(warning) else raise warning end end def on_warning Thread.current[:__pedant_mysql2_on_warning] || @_on_warning end def on_warning=(new_proc) @_on_warning = new_proc end protected def whitelist @whitelist ||= [] end def ignored?(warning) whitelist.any? { |matcher| matcher =~ warning.message } || drop_table_warning(warning) end def drop_table_warning(warning) warning.query =~ /\ADROP TABLE IF EXISTS/ || warning.message =~ /\AUnknown table/ end def setup_capture Thread.current[:__pedant_mysql2_warnings] = [] self.thread_on_warning = lambda { |warning| Thread.current[:__pedant_mysql2_warnings] << warning } end def captured_warnings Thread.current[:__pedant_mysql2_warnings] end def backup_warnings [captured_warnings, Thread.current[:__pedant_mysql2_on_warning]] end def restore_warnings(warnings) Thread.current[:__pedant_mysql2_warnings], self.thread_on_warning = *warnings end def thread_on_warning=(new_proc) Thread.current[:__pedant_mysql2_on_warning] = new_proc end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
activerecord-pedantmysql2-adapter-1.1.3 | lib/pedant_mysql2.rb |