【问题标题】:Are you using custom rails environments?您是否使用自定义 Rails 环境?
【发布时间】:2015-05-08 07:31:29
【问题描述】:

ootb rails 有 3 个环境

  • 发展
  • 测试
  • 生产

您如何处理其他环境,例如登台?

当我考虑我想要从暂存环境中得到什么时,我想要大多数生产设置,但通常服务器名称和其他特定值与生产不同。

您是否为您拥有的每个自定义环境创建 1:N 环境/*.rb?或者您是否将环境更像是一个配置文件,然后使用诸如 application.yml 或 secrets.yml 之类的东西来运行具有不同服务器配置的应用程序?

过去哪些对你有好处,哪些没有?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    我使用require_relative 创建与生产相同的暂存环境,然后覆盖不同的部分。通常唯一的区别是主机名。

    这是我的environments/staging.rb 的样子:

    # Staging configuration is identical to production, with some overrides
    # for hostname, etc.
    
    require_relative "./production"
    
    Rails.application.configure do
      config.action_mailer.default_url_options = {
        :host => "staging.example.com",
        :protocol => "https"
      }
      config.action_mailer.asset_host = "https://staging.example.com"
    end
    

    【讨论】:

      【解决方案2】:

      适用于上述任何方式。

      在某些情况下,我使用 1:N 方式,因为当您有固定数量的部署环境时(例如,当我将自己的宠物项目部署到远程服务器时),这很容易。

      但在其他情况下,我使用的是默认环境集(例如,当我将项目部署给不同的客户时)。

      只需选择适合您和您的项目的任何方式。

      【讨论】:

        【解决方案3】:

        在我看来,当我在暂存环境中运行应用程序时,我希望它具有与生产环境中完全相同的设置,因为这是我在发布新代码之前检查一切是否正常的时候。所以我创建了一个environments/staging.rb,它实际上是一个指向environments/production.rb 的符号链接。要进行部署,我使用Capistrano,它允许您为您想要的每个环境定义服务器设置。如果您不知道它,我真的鼓励您看一下它,因为它使部署就像运行一个简单的命令一样简单,并且它负责上传新代码、预编译资产、重新启动服务器等。

        【讨论】:

        • 遗憾的是,我们没有使用 capistrano ......但我仍在努力将这个东西从 rails 2 升级到 3 :( 但我正在谈论的设置是这个数据库连接,这个电子邮件服务器,这个网络打印机等等。capistrano 是如何发挥它的魔力的,它将设置写入文件?修改 production.rb 文件?
        【解决方案4】:

        这取决于您的“暂存”环境是不同的东西,还是实际上是“生产”环境的变体,通常是这种情况。

        通常,您只需使用production.rb 文件和所有内容以完全生产模式部署到非生产服务器。这种区别与 Rails 无关,仅与您的部署脚本有关。例如Capistrano 会担心这个。

        您需要另一个环境的唯一情况是您需要一组不同的 Rails 设置。

        【讨论】:

        • 您在部署脚本中做了什么?您是否将设置写入加载的文件?在部署期间修改 production.rb?
        • production.rb 中通常不需要更改任何内容,因为您无需调整应用程序的运行方式,仅调整数据库配置等。例如,这些通常由config/deploy/staging.rb 处理。添加 Capistrano 并不难,通常可以节省大量时间。没有部署自动化的生活真的很糟糕。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-15
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        • 2020-02-21
        • 1970-01-01
        • 2011-02-21
        相关资源
        最近更新 更多