Ruby on rails 将应用程序部署到两个不同的服务器上,使用不同的production.rb内容

Ruby on rails 将应用程序部署到两个不同的服务器上,使用不同的production.rb内容,ruby-on-rails,ruby,git,capistrano,Ruby On Rails,Ruby,Git,Capistrano,我正在使用capistrano为两台不同的生产模式的服务器部署我的应用程序,但我需要为每台服务器更改production.rb中的一些内容 我知道两种可能的方法 我觉得两个都有点重,换了几行 对每个分支使用不同的分支(git)。-担心维修 创造一个不同的环境 如何应对这种情况,一种简单的选择还是一种新的方式 轨道3和盖2 编辑:还建议我使用ENV变量或在服务器上的其他位置包含文件 为每个应用程序使用不同的分支(git) 当且仅当满足以下条件时,才这样做: 您希望每个服务器应用程序具有明显不

我正在使用capistrano为两台不同的生产模式的服务器部署我的应用程序,但我需要为每台服务器更改
production.rb
中的一些内容

我知道两种可能的方法

我觉得两个都有点重,换了几行

  • 对每个分支使用不同的分支(git)。-担心维修

  • 创造一个不同的环境

如何应对这种情况,一种简单的选择还是一种新的方式

轨道3和盖2

编辑:还建议我使用ENV变量或在服务器上的其他位置包含文件

为每个应用程序使用不同的分支(git)

当且仅当满足以下条件时,才这样做:

  • 您希望每个服务器应用程序具有明显不同的功能,并且这些功能相互干扰,即使用特定于服务器的功能标志并不容易

  • 例如,如果一台服务器是新代码的alpha测试,而另一台服务器是新代码的beta测试

创造一个不同的环境

当且仅当满足以下条件时,才这样做:

  • 您希望每个服务器应用程序都有明显不同的体验

  • 例如,如果一台服务器是贸易展的演示服务器,因此经常被删除,那么一台服务器就是客户的真实站点

使用环境变量

这是最好的办法

使用相同或类似的方法

“dotenv解决了设置特定于项目的环境变量的问题,并且非常容易入门。首先包括gem'dotenv rails',:groups=>[:development,:test]在适当的组中,在本例中为“开发和测试”。然后,您可以将敏感信息放入项目目录根目录下的.env文件中“

“费加罗与多滕夫相似。它允许您将所有敏感机密存储在config/application.yml的YAML文件中。通过简单的figaro安装命令,您可以将YAML文件自动添加到gitignore。Figaro的构建考虑到了Heroku的部署。有一个方便的配置可以帮助您设置配置文件中的值。它还提供了有关部署到其他主机的有用信息。”


信用证:

两个环境都不是生产环境,对吗?最好创建第二个不同的环境(仍处于生产模式)。一般做法是有一个单独的
Staging
env或
QA
env。根据第二个env的用途,您可以随意命名。例如,我专门为升级应用程序的ruby和rails版本设置了一个
Upgrade
env。两者都是
production
env.,我应该创建一个不同的env u建议?为什么同一个应用程序需要2个生产环境?是否有两台服务器充当生产应用程序服务器以实现负载平衡?