【问题标题】:Deploying application to two different servers, with different production.rb contents将应用程序部署到两个不同的服务器,具有不同的 production.rb 内容
【发布时间】:2014-12-30 16:24:05
【问题描述】:

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

2 我知道的可能方式。

对于几行更改,我觉得两者都不太重。

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

  • 创建不同的环境。

如何处理这种情况,选择更简单的还是新的方式?

Rails 3 和 Cap 2

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

【问题讨论】:

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

标签: ruby-on-rails ruby git capistrano


【解决方案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。有一个方便的配置可以帮助您从配置文件中设置值。它还提供了有关部署到其他主机的有用信息。”

信用:Managing Environment Configuration in Rails

【讨论】:

    猜你喜欢
    • 2020-05-06
    • 1970-01-01
    • 2018-05-26
    • 2017-05-31
    • 1970-01-01
    • 2013-12-06
    • 2020-12-17
    • 2022-01-25
    • 2021-08-08
    相关资源
    最近更新 更多