我需要在使用ActiveRecord连接到oracle数据库后运行oracle脚本 我知道存在初始化器,但这些只在应用程序的启动时运行。我需要一点来编写一个代码,该代码在每个新的数据库连接建立之后运行 这需要初始化与使用相同遗留数据库的其他应用程序共享的一些oracle环境变量。
有什么想法吗?
提前致谢。
答案 0 :(得分:0)
我找到了解决方案:
创建文件/config/initializers/oracle.rb并输入以下代码:
ActiveRecord::ConnectionAdapters::ConnectionPool.class_eval do
def new_connection_with_initialization
result = new_connection_without_initialization
result.execute('begin Base_Pck.ConfigSession; end;')
result
end
alias_method_chain :new_connection, :initialization
end
alias_method_chain
允许您更改方法(new_connection)而不覆盖它,但扩展它。
然后我们只需要将脚本更改为result.execute
调用。