使用.env文件在生产中设置SECRET_KEY_BASE

我在生产中的根文件夹中有一个.env文件。 此文件定义了在config/secrets.yml使用的SECRET_KEY_BASE 。 问题是我无法在config/secrets.yml .env之前加载我的.env文件。 我尝试过使用dotenv gem而没有成功。

关于如何在生产中做到这一点的任何想法?

我不想为生产服务器上的webmaster用户全局设置它。 应该只能由应用程序访问SECRET_KEY_BASE值。

我正在使用rails 4.1。

我也使用dotenv gem。 它几乎适用于所有情况。

这是我对dotenv gem的配置(是的,我把dotenv放在dotenv中)。 我只是创建一个aaaaa.rb初始化文件。

 config/initializers/aaaaaa.rb #obscure name because rails load initializers/* files based on alphabets require 'dotenv' Dotenv.load 

并且,它没有的情况,我最后在config/boot.rb文件中这样做

 ENV["SECRET_KEY_BASE"] = "foobar" 

我也有这个问题。 以下是我如何使用它。 我按照文档尽早初始化了dotenv :

 # config/application.rb Bundler.require(*Rails.groups) Dotenv::Railtie.load HOSTNAME = ENV['HOSTNAME'] 

但后来我遇到了这个错误(问题#155) :

 gems/dotenv-rails-1.0.2/lib/dotenv/rails.rb:17:in `load': undefined method `join' for nil:NilClass (NoMethodError) 

解决方法(也在问题#155中记录 )是用以下代码替换Dotenv::Railtie.load

 Dotenv.load(File.expand_path("../../.env.#{Rails.env}", __FILE__)) 

显然这只是使用rails 4.1时的一个问题。

也有这个问题,但设法让我的秘密在我的secrets.yml文件中工作:

 production: secret_key_base: ENV["SECRET_KEY_BASE"] 

它在删除<%= %>后起作用