使用.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"]
它在删除<%= %>
后起作用