我的控制器中有以下代码:
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):
当我尝试调用此操作时,应用程序给了我一个让我想到 env. 变量未设置。
从服务器控制台,如果我 cd 到 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'
)
然后显然要确保.env
在shared
运行您的应用程序的服务器上的文件夹中使用您的机密配置了您的文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句