gpt4 book ai didi

ruby-on-rails - Rails 仅针对开发环境运行迁移

转载 作者:行者123 更新时间:2023-11-29 12:24:39 25 4
gpt4 key购买 nike

有没有办法只在开发数据库上运行迁移。

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

目前我做了一些 hack,我在 Postgres 中做了一些镜像表的迁移,我正在与 Salesforce 同步。

然后在推送到 heroku 之前删除迁移文件(将它们放在单独的文件夹中)。这需要完成,因为迁移文件会扰乱 heroku connect 的工作方式。仅供引用。这些模型看起来像这样。

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

所以不能真正对数据库中的 my_models 表进行迁移。

问题是任何时候我必须更改同步的性质,我需要将这些文件带回,回滚数据库,更新那些原始迁移文件,迁移数据库,然后删除那些迁移文件。

并不是最好的解决方案。

回到问题。有没有一种方法可以只在开发中运行迁移,这样当我在生产中运行迁移时,它会跳过那些只用于开发的迁移。像这样的东西:

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

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

最佳答案

Heroku 维护一个名为:RAILS_ENV 的环境变量,在开发中 Rails 也维护相同的变量,因此您可以使用它。

allowed_env = 'development'

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

在 Heroku 上 RAILS_ENV 设置为 stagingproduction

关于ruby-on-rails - Rails 仅针对开发环境运行迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47192224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com