我嘗試使用環境變量來配置生產中的rails應用程序,但我不能讓它們工作。環境變量不能在rails上工作
我出口他們在我~/.bashrc
這樣
export AWS_ACCESS_KEY_ID=my_key
export AWS_REGION=my_region
export AWS_SECRET_ACCESS_KEY=my_secret_key
export S3_BUCKET_NAME=my_bucket_name
export S3_HOST_NAME=my_host_name
,如果我用我的printenv終端上,我可以看到他們。
我訪問他們在我production.rb
這樣
config.paperclip_defaults = {
storage: :s3,
s3_region: ENV['AWS_REGION'],
s3_host_name: ENV['S3_HOST_NAME'],
bucket: ENV['S3_BUCKET_NAME'],
s3_credentials: {
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
}
}
利用這種配置我的應用程序崩潰時我打開與圖像的鏈接,說我如果我將它們保存到指定BUCKET_NAME
在secrets.yml
和訪問他們這個樣子,它完美
config.paperclip_defaults = {
storage: :s3,
s3_region: Rails.application.secrets.s3_region,
s3_host_name: Rails.application.secrets.s3_host_name,
bucket: Rails.application.secrets.s3_bucket_name,
s3_credentials: {
access_key_id: Rails.application.secrets.access_key,
secret_access_key: Rails.application.secrets.secret_access_key,
}
}
當我部署在Heroku上,並通過儀表盤設置日e環境變量再次工作很好,只有當我通過我的計算機中的ENV ['key']訪問它時,崩潰纔會崩潰
[編輯]問題出在紅寶石礦上,我添加了-ic到腳本啓動它,解決了這個問題。謝謝大家
您的應用程序是否使用其他用戶?也許你需要把它們放在/ etc/environment中? – NickyNick
你如何開始你的申請?在您設置環境的同一終端中,您可以運行'irb'並檢查'puts ENV ['AWS_ACCESS_KEY_ID']' – Kukunin