我想在每次建立新连接时(在同一个连接上)执行一个简单的SQL行
为什么呢? 使用postgres,“set application_name ='abc';”当我向数据库服务器查询统计信息时,将允许我使用连接跟踪应用程序。
没有看到任何可以让我这样做的事情。
答案 0 :(得分:1)
我最近解决了类似的问题。连接后我正在更改事务隔离级别。这个例子可以帮到你。它基于建议in the final example on this blog post.
# lib/active_record/application_name.rb
module ActiveRecord
module ApplicationName
def self.included(base)
unless base.respond_to? :establish_connection_with_application_name
base.extend ClassMethods
base.class_eval do
class << self
alias_method_chain :establish_connection, :application_name
end
end
end
end
module ClassMethods
def establish_connection_with_application_name(*args)
result = establish_connection_without_application_name(*args)
::ActiveRecord::Base.connection.execute("set application_name = 'abc';")
result
end
end
end
end
# lib/patches/active_record.rb
require 'active_record/application_name'
class ActiveRecord::Base
include ActiveRecord::ApplicationName
end
# config/initializers/patches.rb
require 'patches/active_record'