【发布时间】:2011-06-08 15:59:34
【问题描述】:
使用 ActiveRecord 连接到 oracle 数据库后,我需要运行 oracle 脚本。
我知道存在初始化程序,但它们仅在应用程序启动时运行。我需要编写一个在每个新数据库连接建立后运行的代码。
这是初始化与使用相同遗留数据库的其他应用程序共享的一些 oracle 环境变量所必需的。
有什么想法吗?
提前致谢。
【问题讨论】:
标签: ruby-on-rails oracle activerecord
使用 ActiveRecord 连接到 oracle 数据库后,我需要运行 oracle 脚本。
我知道存在初始化程序,但它们仅在应用程序启动时运行。我需要编写一个在每个新数据库连接建立后运行的代码。
这是初始化与使用相同遗留数据库的其他应用程序共享的一些 oracle 环境变量所必需的。
有什么想法吗?
提前致谢。
【问题讨论】:
标签: ruby-on-rails oracle activerecord
我找到了解决方案:
创建文件 /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调用即可。
【讨论】: