【问题标题】:Environment variables on production生产环境变量
【发布时间】:2013-06-17 15:03:00
【问题描述】:

我目前正在亚马逊上部署我的 Rails 应用程序,但我遇到了环境变量问题。

我在开发和测试中使用 dotenv gem,它在尝试访问我的环境变量时工作得很好,但在生产中它似乎不起作用。我读到 dotenv gem 不适用于生产。我必须设置近 20 个不同的环境变量,包括 API 密钥等,我正在使用 Rubber/capistrano 进行部署。

我怎样才能让这个以干净的方式工作?

【问题讨论】:

  • 嗨,figaro(正如我在回答中提到的)对你来说没有选择吗?

标签: ruby-on-rails deployment capistrano


【解决方案1】:

dotenv-deployment readme 提到了如何在生产环境中使用它:

如果您使用的是 Capistrano 3+:

只需将 .env 添加到您的linked_files 列表中:

set :linked_files, %w{.env}

如果您使用的是 Capistrano 2.x.x 版本:

在您的config/deploy.rb 文件中:

require "dotenv/capistrano"

它将在新版本中符号链接位于/path/to/shared 中的.env

记得将:production 组添加到您应用程序的Gemfile 中的dotenv-rails gem:

gem 'dotenv-rails', :groups => [:development, :test, :production]

【讨论】:

    【解决方案2】:

    您可以使用figaro gem。我正在使用它,它在生产中运行良好。

    【讨论】:

      【解决方案3】:

      在 Capistrano 3 中,将 require "dotenv/rails-now" 添加到您的 Capfile。 这将确保 capistrano 也可以访问环境。

      (我们在 capistrano 访问 appsignal 的 API 令牌时遇到问题,因此当新部署完成时 capistrano 无法通知 appsignal)

      【讨论】:

      • 我对 appsignal / dotenv-rails / cap 3 有完全相同的问题;我所做的是不同的,我将它添加到 Capfile: require 'dotenv'; Dotenv.load
      • Capistrano 4?我不相信存在一个
      • 谢谢 Koen,不知道我是怎么漏掉那个错字的。
      猜你喜欢
      • 2021-07-25
      • 2018-07-09
      • 1970-01-01
      • 2021-12-26
      • 2019-06-08
      • 1970-01-01
      • 1970-01-01
      • 2017-04-16
      • 1970-01-01
      相关资源
      最近更新 更多