Rails仅针对开发环境运行迁移

时间:2017-11-09 00:55:52

标签: ruby-on-rails postgresql heroku rails-migrations heroku-connect

是否有办法在开发数据库上运行迁移。

我使用Heroku Connect将Postgres中的某些表与Salesforce中的某些表同步。

目前我做了一些黑客攻击,我在Postgres上进行了一些镜像,我正在与Salesforce同步。

然后我删除迁移文件(将它们放在一个单独的文件夹中),然后我推送到heroku。这需要完成,因为迁移文件会混淆heroku连接的工作方式。只是为了上下文。模型看起来像这样。

class MyModel < ApplicationRecord
  self.table_name = 'salesforce.someTable__c' unless Rails.env.development?
end

因此无法真正为db。{/ p>中的my_models表进行迁移

问题是我必须改变同步的性质,我需要重新启动这些文件,回滚数据库,更新这些原始迁移文件,迁移数据库,然后删除那些迁移文件。

不是最好的解决方案。

回到这个问题。有没有办法在开发上运行迁移,这样当我在生产上运行迁移时,它将跳过那些仅用于开发的迁移。类似的东西:

if Rails.env.development?
  ...
else
  ...
end

if Rails.env.production?
  ...
else
  ...
end

1 个答案:

答案 0 :(得分:0)

Heroku维护一个名为RAILS_ENV的环境变量,同样的变量也由开发中的Rails维护,所以你可以去实现它。

allowed_env = 'development'

if ENV['RAILS_ENV'] == allowed_env
  create_table :users do |t|
  end
end

On Heroku RAILS_ENV设置为stagingproduction