我目前正在亚马逊上部署我的 Rails 应用程序,但我遇到了环境变量问题。
我在开发和测试中使用 dotenv gem,它在尝试访问我的环境变量时工作得很好,但在生产中它似乎不起作用。我读到 dotenv gem 不适用于生产。我必须设置近 20 个不同的环境变量,包括 API 密钥等,我正在使用橡胶/capistrano 进行部署。
我怎样才能让它以一种干净的方式工作?
我目前正在亚马逊上部署我的 Rails 应用程序,但我遇到了环境变量问题。
我在开发和测试中使用 dotenv gem,它在尝试访问我的环境变量时工作得很好,但在生产中它似乎不起作用。我读到 dotenv gem 不适用于生产。我必须设置近 20 个不同的环境变量,包括 API 密钥等,我正在使用橡胶/capistrano 进行部署。
我怎样才能让它以一种干净的方式工作?
dotenv -deployment 自述文件提到了如何在生产环境中使用它:
如果您使用 Capistrano 3+:
只需将 .env 添加到您的链接文件列表中:
set :linked_files, %w{.env}
如果您使用 Capistrano 2.xx 版本:
在您的config/deploy.rb
文件中:
require "dotenv/capistrano"
它将符号链接.env
位于/path/to/shared
新版本中。
请记住将:production
组添加到dotenv-rails
应用程序的 gem 中Gemfile
:
gem 'dotenv-rails', :groups => [:development, :test, :production]
您可以使用figaro gem。我正在使用它,它在生产中运行良好。
在 Capistrano 3 中添加require "dotenv/rails-now"
到您的 Capfile。这将确保 capistrano 也可以访问环境。
(我们在 capistrano 访问 appsignal 的 API 令牌时遇到了问题,因此 capistrano 无法在新部署完成时通知 appsignal)