我正在使用 capistrano 为生产模式的两个不同服务器部署我的应用程序,但我需要为每个服务器更改production.rb
中的一些内容。
2我知道的可能方式。
我觉得两条线都变得很重。
为每个分支使用不同的分支(git)。 - 担心维护。
创建不同的环境。
如何应对这种情况,更简单的选择还是新的方式?
Rails 3和Cap 2
编辑:我还被建议使用ENV变量或在服务器上的其他位置包含文件
答案 0 :(得分:1)
为每个人使用不同的分支(git)。
当且仅当:
时这样做您希望每个服务器应用程序具有明显不同的功能,并且这些功能相互干扰,即没有简单的方法来使用特定于服务器的功能标记。
例如,如果一个服务器是新代码的alpha测试,而一个服务器是新代码的beta测试。
创建不同的环境。
当且仅当:
时这样做您希望每个服务器应用都有截然不同的体验。
例如,如果一个服务器是贸易展览的演示服务器,因此经常被擦除,而一个服务器是您真正的客户网站。
使用ENV变量
这是最好的方法。
使用dotenv gem或类似的figaro gem。
“dotenv解决了设置项目特定环境变量的问题,并且非常容易上手。首先在适当的位置加入gem'dotenv-rails',:groups => [:development,:test]组,在本例中是开发和测试。然后,您可以将敏感信息放在项目目录根目录下的.env文件中“
“Figaro与dotenv类似。它的作用是允许您将所有敏感秘密存储在config / application.yml的YAML文件中。使用简单的figaro install命令,您可以将YAML文件自动添加到gitignore。 Figaro在构建时考虑到了Heroku的部署。有一个方便的配置可以帮助您设置配置文件中的值。它还提供了有关部署到其他主机的有用信息。“