Rails 当我退出连接到多个数据库的项目时,控制台沙箱模式不会回滚
Rails console sandbox mode doesn't rollback when I exit from a project which connects to multiple DBs
我正在使用 Rails5 并从一个项目连接多个数据库。
(通过为额外的数据库定义新的database.yml。就像在https://medium.com/alturasoluciones/using-multiple-databases-on-rails-74ba29a2a840中写的一样)
当我使用
bundle exec rails c --sandobx
config/database.yml
中定义的主数据库回滚,但额外的数据库没有。
我是否需要添加额外的配置来为其启用沙盒模式?
似乎 --sandbox
选项在默认情况下不会用事务包装您的自定义数据库连接。所以你必须自己做。
参考: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
我自己还没有尝试过(因为设置第二个数据库需要很多东西...),但我希望这对您有所帮助:)
我正在使用 Rails5 并从一个项目连接多个数据库。 (通过为额外的数据库定义新的database.yml。就像在https://medium.com/alturasoluciones/using-multiple-databases-on-rails-74ba29a2a840中写的一样)
当我使用
bundle exec rails c --sandobx
config/database.yml
中定义的主数据库回滚,但额外的数据库没有。
我是否需要添加额外的配置来为其启用沙盒模式?
似乎 --sandbox
选项在默认情况下不会用事务包装您的自定义数据库连接。所以你必须自己做。
参考: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
我自己还没有尝试过(因为设置第二个数据库需要很多东西...),但我希望这对您有所帮助:)