Sha256: 615c8a5b0a9f3fb87625c43598face2455094e46da2ddf4b8f799fb1276dc08d

Contents?: true

Size: 1006 Bytes

Versions: 10

Compression:

Stored size: 1006 Bytes

Contents

module Dossier
  module Adapter
    class ActiveRecord

      attr_accessor :options, :connection

      def initialize(options = {})
        self.options    = options
        self.connection = options.delete(:connection) || active_record_connection
      end

      def escape(value)
        connection.quote(value)
      end

      def execute(query, report_name = nil)
        Result.new(connection.exec_query(*[query, report_name].compact))
      rescue => e
        raise Dossier::ExecuteError.new "#{e.message}\n\n#{query}"
      end

      private

      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

    end

  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
dossier-2.5.2 lib/dossier/adapter/active_record.rb
dossier-2.5.1 lib/dossier/adapter/active_record.rb
dossier-2.5.0 lib/dossier/adapter/active_record.rb
dossier-2.4.0 lib/dossier/adapter/active_record.rb
dossier-2.3.0 lib/dossier/adapter/active_record.rb
dossier-2.2.0 lib/dossier/adapter/active_record.rb
dossier-2.1.1 lib/dossier/adapter/active_record.rb
dossier-2.1.0 lib/dossier/adapter/active_record.rb
dossier-2.0.1 lib/dossier/adapter/active_record.rb
dossier-2.0.0 lib/dossier/adapter/active_record.rb