smathy/wherex

View on GitHub
lib/wherex/connection.rb

Summary

Maintainability
A
55 mins
Test Coverage
module Wherex
  module ActiveRecord
    def self.extended base
      base.class_eval do
        class << self
          alias_method_chain :establish_connection, :wherex
        end
      end
    end

    def establish_connection_with_wherex spec = nil
      establish_connection_without_wherex spec

      require 'wherex/adapters'
      ::ActiveRecord::ConnectionAdapters::AbstractAdapter.send :include, AbstractAdapter

      adapter = ::ActiveRecord::Base.connection.class
      my_adapter_name = adapter.to_s.demodulize

      begin
        my_adapter = "Wherex::#{my_adapter_name}".constantize
        adapter.send :include, my_adapter
      rescue NameError => e
      end

      if ::ActiveRecord::Base.connection.raw_connection.respond_to? :create_function
        ::ActiveRecord::Base.connection.raw_connection.create_function( "regexp", 2 ) do |context, pattern, string|
          if string.present?
            context.result = 1 if string.match pattern
          end
        end
      end
    end
  end
end