[英]Setting environment variables in ubuntu production server and Rails
我的控制器中有以下代碼:
def email_signup
email_address = params[:email_address]
response = RestClient.post("https://api:#{ENV['MAILGUN_API_KEY']}" \
"@api.mailgun.net/v3/lists/#{ENV['MAILGUN_ALIAS']}/members",
:subscribed => true,
:address => email_address)
redirect_to jobs_url, success: "Thanks for Signing Up!"
rescue RestClient::BadRequest => e
redirect_to jobs_url, error: e
end
使用dotenv gem在開發人員中表現出色。 部署到服務器后,我將新的環境變量添加到/ etc / environment並再次使用capistrano進行部署以重新啟動應用程序,並且該應用程序為我提供了RestClient::Unauthorized (401 Unauthorized):
當我嘗試調用此操作時,讓我覺得環境。 未設置var。
從服務器控制台,如果我進入railsapp / current並運行ruby -e 'p ENV["MAILGUN_ALIAS"]'
那么我可以看到正確打印的變量。
我也嘗試過導出.bashrc中的變量,但不會改變行為。
另外,僅供參考,我在服務器上使用RVM來設置ruby版本。
我還能在這里嘗試什么?
使用Capistrano,您是否在shared
文件夾中設置了.env?
config/deploy.rb
:
set :linked_files, fetch(:linked_files, []).push(
'config/database.yml', 'config/secrets.yml', '.env'
)
然后,顯然要確保在運行應用程序的服務器上的shared
文件夾中配置了帶有密碼的.env
文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.