我在生产中的根文件夹中有.env
个文件。此文件定义SECRET_KEY_BASE
中使用的config/secrets.yml
。问题是我无法在.env
之前加载config/secrets.yml
文件。我尝试使用dotenv
gem没有成功。
关于如何在生产中使用它的任何想法?
我不想在生产服务器上为我的webmaster
用户全局设置它。只有应用程序才能访问SECRET_KEY_BASE
值。
我使用的是rails 4.1。
答案 0 :(得分:4)
我也使用dotenv
gem。几乎在所有情况下它都适用于我。
这是dotenv
gem的配置(是的,我将dotenv
放在Gemfile
中)。我只是创建了一个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"
答案 1 :(得分:2)
I was also having this problem. Here is how I got it to work. I followed documentation to initialize dotenv early:
# config/application.rb
Bundler.require(*Rails.groups)
Dotenv::Railtie.load
HOSTNAME = ENV['HOSTNAME']
But then I came across this error (issue #155):
gems/dotenv-rails-1.0.2/lib/dotenv/rails.rb:17:in `load': undefined method `join' for nil:NilClass (NoMethodError)
The workaround (also documented in issue #155) is to replace Dotenv::Railtie.load
with:
Dotenv.load(File.expand_path("../../.env.#{Rails.env}", __FILE__))
Apparently this is only a problem when using rails 4.1.
答案 2 :(得分:-1)
也有这个问题,但设法通过在我的secrets.yml文件中使用它来实现它:
production:
secret_key_base: ENV["SECRET_KEY_BASE"]
删除<%= %>