Sha256: d8c2b246b687e4fc204b6f5cd257596dc73bdd2e2f01c2ec393e36d7d2037c7d

Contents?: true

Size: 1.48 KB

Versions: 1

Compression:

Stored size: 1.48 KB

Contents

module ActiveRecord::Turntable
  module ActiveRecordExt
    module AbstractAdapter
      def translate_exception_class(e, sql)
        begin
          message = "#{e.class.name}: #{e.message}: #{sql} : #{turntable_shard_name}"
        rescue Encoding::CompatibilityError
          message = "#{e.class.name}: #{e.message.force_encoding sql.encoding}: #{sql} : #{turntable_shard_name}"
        end

        exception = translate_exception(e, message)
        exception.set_backtrace e.backtrace
        exception
      end

      # @note override for append current shard name
      # rubocop:disable Style/HashSyntax, Style/MultilineMethodCallBraceLayout
      def log(sql, name = "SQL", binds = [], statement_name = nil)
        @instrumenter.instrument(
          "sql.active_record",
          :sql                  => sql,
          :name                 => name,
          :connection_id        => object_id,
          :statement_name       => statement_name,
          :binds                => binds,
          :turntable_shard_name => turntable_shard_name) { yield }
      rescue => e
        raise translate_exception_class(e, sql)
      end
      # rubocop:enable Style/HashSyntax, Style/MultilineMethodCallBraceLayout

      protected :translate_exception_class, :log

      def turntable_shard_name=(name)
        @turntable_shard_name = name.to_s
      end

      def turntable_shard_name
        instance_variable_defined?(:@turntable_shard_name) ? @turntable_shard_name : nil
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
activerecord-turntable-3.0.0 lib/active_record/turntable/active_record_ext/abstract_adapter.rb