您使用自定义导轨环境吗?

时间:2015-03-06 16:25:32

标签: ruby-on-rails

ootb rails有3种环境

  • 发展
  • 测试
  • 生产

如何处理其他环境,例如分段?

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

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

过去哪些方面效果不错,哪些方面没有效果?

4 个答案:

答案 0 :(得分:1)

这取决于你的“舞台”环境是不同的东西,或者实际上是“生产”环境的变体,通常就是这种情况。

通常,您只需将完整生产模式(使用production.rb文件和所有内容)部署到非生产服务器。这种区别与rails无关,仅对您的部署脚本有影响。例如,Capistrano会担心这一点。

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

答案 1 :(得分:0)

适用于上述任何方式。

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

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我使用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