class Dossier::Adapter::ActiveRecord

Attributes

connection[RW]
options[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/dossier/adapter/active_record.rb, line 7
def initialize(options = {})
  self.options    = options
  self.connection = options.delete(:connection) || active_record_connection
end

Private Class Methods

name() click to toggle source

Needs a unique name for ActiveRecord’s connection pool

# File lib/dossier/adapter/active_record.rb, line 30
def self.name
  "Dossier::Adapter::ActiveRecord::Connection_#{object_id}"
end

Public Instance Methods

escape(value) click to toggle source
# File lib/dossier/adapter/active_record.rb, line 12
def escape(value)
  connection.quote(value)
end
execute(query, report_name = nil) click to toggle source
# File lib/dossier/adapter/active_record.rb, line 16
def execute(query, report_name = nil)
  # Ensure that SQL logs show name of report generating query
  Result.new(connection.exec_query(*["\n#{query}", report_name].compact))
rescue => e
  raise Dossier::ExecuteError.new "#{e.message}\n\n#{query}"
end

Private Instance Methods

active_record_connection() click to toggle source
# File lib/dossier/adapter/active_record.rb, line 25
def active_record_connection
  @abstract_class = Class.new(::ActiveRecord::Base) do
    self.abstract_class = true
    
    # Needs a unique name for ActiveRecord's connection pool
    def self.name
      "Dossier::Adapter::ActiveRecord::Connection_#{object_id}"
    end
  end
  @abstract_class.establish_connection(options)
  @abstract_class.connection
end