当我退出连接到多个数据库的项目时,Rails控制台沙箱模式不会回滚

时间:2018-09-03 10:59:10

标签: ruby-on-rails database sandbox rollback

我正在使用Rails5并从一个项目连接多个DB。 (通过为额外的数据库定义新的database.yml。就像用https://medium.com/alturasoluciones/using-multiple-databases-on-rails-74ba29a2a840编写的一样)

当我使用

bundle exec rails c --sandobx

config/database.yml中定义的主数据库会回滚,但多余的数据库不会。 我是否需要添加其他配置以启用沙箱模式?

1 个答案:

答案 0 :(得分:1)

默认情况下,似乎--sandbox选项不会用事务包装您的自定义数据库连接。所以你必须自己做。

ref:active_record/railties/console_sandbox.rb

您可以在应用程序配置文件中编写自定义控制台设置,因此请尝试以下操作:

# config/environments/development.rb

console do |app|
  if app.sandbox?
    CacheBase.connection.begin_transaction(joinable: false)
    at_exit do
      CacheBase.connection.rollback_transaction
    end
  end
end

我还没有尝试过自己(因为要像您一样设置第二个数据库的工作量很大……),但我希望这会有所帮助:)