我最近发布了一个名为forceps的库,您可以使用它从不同的数据库中导入活动记录模型。
您需要做的第一件事是为生产数据库配置 Active Record 连接。Heroku 允许您使用以下命令获取 Postgres 数据库凭据:
heroku pg:credentials <production database name> --app <production app name>
使用这些凭据,您可以配置文件中命名的remote
节点database.yml
。
remote:
adapter: postgresql
host: ...
port: 5432
username: ...
password: ...
database: ...
encoding: utf8
现在您可以准备一个脚本,将生产环境中的内容复制到您正在处理的默认环境中。您可以在开发中测试此脚本,然后在登台时运行它。
例如,如果您想复制所有帐户,该脚本可能类似于:
Rails.application.eager_load!
Forceps.configure
Forceps::Remote::Account.find_each do |remote_account|
remote_account.copy_to_local
end
镊子让您配置要复制的对象。默认情况下,它将探索和复制所有关联的对象。这意味着它将所有关联数据复制到每个帐户,这可能不是您想要的。
此外,#copy_to_local
您可以将远程类Forceps::Remote::<Model>
用作任何其他活动记录模型,而不是使用。然后,您可以手动复制您需要的任何内容:
remote_account = Forceps::Remote::Account.find_by_email 'some@email.com'
local_account = Account.create!(email: remote_account.email)