我試圖在生產模式下獲得我的ENV變量... 但現在的方式..無法到達服務器...未找到SECRET_KEY_BASE ...如果硬編碼它,然後去麻煩W上的數據庫creds,如果我硬編碼他們,得到了麻煩W上的SMTP creds ...Rails 4 - 無法獲取生產中的ENV變量
這意味着沒有ENV []不能達到變量...
我增加了gemfile讓它在生產環境中捆綁它
gem 'dotenv-rails', :groups => [:development, :test, :staging, :production]
我.ENV文件存在於我的遠程服務器(14 Ubuntu的 - 瓦特.rbenv紅寶石2.0,R a是4.2)
cat /var/www/workshop/shared/.env
SECRET_KEY_BASE=106063d5146566142b6aa4782b874115c73a61ac2505f11f8e
DATABASE_USER_NAME=myself
DATABASE_PASSWORD=mydbpwd
MAILGUN_SMTP_SERVER=smtp.mailgun.org
[email protected]
MAILGUN_SMTP_PASSWORD=2fc998a7399999999a264b88c
MAILGUN_SMTP_DOMAIN=mydomain.com
我設置遠程服務器
cat secrets.yml
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
我在我的secrets.yml文件設置我的database.yml
cat database.yml
production:
adapter: postgresql
database: workshop
encoding: unicode
pool: 5
username: <%= ENV['DATABASE_USER_NAME'] %>
password: <%= ENV['DATABASE_PASSWORD'] %>
,我更新了我的config /環境/ production.rbW¯¯SMTP creds
cat production.rb
.....
# SMTP settings for mailgun
config.action_mailer.smtp_settings = {
:port => 587,
:address => ENV['MAILGUN_SMTP_SERVER'],
:user_name => ENV['MAILGUN_SMTP_USER_NAME'],
:password => ENV['MAILGUN_SMTP_PASSWORD'],
:domain => ENV['MAILGUN_SMTP_DOMAIN'],
:authentication => :plain,
:enable_starttls_auto => true
}
...
你在哪裏運行的生產環境? Heroku的?通常情況下,dotenv寶石是一種幫助開發但不能用於生產的方式... – 2015-02-23 16:15:12
您是否將.env鏈接到當前文件夾? – jerrytao 2015-02-23 17:04:47