【问题标题】:Switch Rails database connection on the fly即时切换 Rails 数据库连接
【发布时间】:2018-09-20 17:13:48
【问题描述】:

我的 Rails 5 应用程序中有一个开发数据库,​​但在我们的网络中,我们还保留了一个填充数据库来测试内容。有时,我必须一直在这些数据库之间切换,如果我能在 Rails 运行时立即执行此操作,我会节省很多时间。

我尝试删除所有活动连接,然后修补配置,但不知何故它一直连接到我的原始数据库。

这是我尝试过的:

Product.count
  => 0 # is dev db

ActiveRecord::Base.connection_handler.remove_connection('development')
ActiveRecord::Base.connection_handler.remove_connection('primary')
ActiveRecord::Base.configurations['development'] = test_config_params

Product.count

=> 0 # Is still dev db

Rails 在哪里缓存这些旧的连接信息,我该如何删除/替换它?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5 rails-activerecord


    【解决方案1】:

    您可以使用ActiveRecord::Base.establish_connection(config) 更改数据库连接。如果设置了ActiveRecord::Base.configurations(Rails 会自动将 config/database.yml 的内容加载到其中),可以给出一个符号作为参数,表示配置哈希中的一个键,如 :development:test

    查看完整文档here

    【讨论】:

      猜你喜欢
      • 2016-12-17
      • 2011-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多