如何在使用rails连接到oracle后运行特定脚本?

时间:2011-01-13 17:37:47

标签: ruby-on-rails oracle activerecord

我需要在使用ActiveRecord连接到oracle数据库后运行oracle脚本 我知道存在初始化器,但这些只在应用程序的启动时运行。我需要一点来编写一个代码,该代码在每个新的数据库连接建立之后运行 这需要初始化与使用相同遗留数据库的其他应用程序共享的一些oracle环境变量。

有什么想法吗?

提前致谢。

1 个答案:

答案 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调用。