3

.env在生产中的根文件夹中有一个文件。该文件定义了SECRET_KEY_BASEconfig/secrets.yml. 问题是我无法.envconfig/secrets.yml. 我试过使用dotenvgem 没有成功。

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

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

我正在使用导轨 4.1。

4

3 回答 3

4

我也用dotenv宝石。它几乎在所有情况下都对我有用。

这是我的dotenvgem 配置(是的,我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"
于 2014-05-03T01:31:28.967 回答
2

我也遇到了这个问题。这是我如何让它工作的。我按照文档及早初始化 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 时的问题。

于 2015-09-14T15:26:07.583 回答
-2

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

production:
  secret_key_base: ENV["SECRET_KEY_BASE"]

删除后它工作<%= %>

于 2014-11-17T03:36:24.227 回答