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

问题描述 投票:0回答:1

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

我用的时候

bundle exec rails c --sandobx

config/database.yml中定义的主数据库回滚但额外的数据库没有。我是否需要添加额外配置才能启用沙箱模式?

ruby-on-rails database sandbox rollback
1个回答
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

我没有尝试过自己(因为有很多设置像你的第二个数据库...),但我希望这有帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.