首页 > 解决方案 > 为远程数据库运行 rails 迁移的简单方法

问题描述

我有一个 Rails 应用程序,想将我的 Postgres 数据库拆分为远程托管数据库,而不是标准的本地数据库。配置它似乎很容易 - 但是,现在我正在尝试针对这个新数据库运行我的迁移,但事实证明它更加困难。我正在使用 Mina 进行部署,它调用 rake db:migrate 作为部署的一部分。但是,它不会运行迁移,因为它说所有迁移都是最新的,并且我的创建调用找不到表,所以我假设迁移没有在远程数据库上运行。

实现这一目标的最佳方法是什么?我发现的所有其他答案都涉及ActiveRecord::Base.establish_connection(db_params)在每个迁移和每个模型的顶部添加类似命令的内容。这看起来很荒谬——我现在可能有 75 次迁移。没有更好的办法吗?这甚至是正确的方法,还是我也可以以某种方式使用生成的方案文件?

标签: ruby-on-railspostgresql

解决方案


database.yml您可以使用类似的方式设置数据库凭据。

remote:
  adapter: postgresql
  host: your.remote.host
  database: yourdb
  username: user
  password: pass
  pool: 5
  timeout: 5000
  locale: en_US.UTF8

然后像这样运行你的迁移

RAILS_ENV=remote rails db:migrate

推荐阅读