首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails应用程序中的生产环境变量

Rails应用程序中的生产环境变量
EN

Stack Overflow用户
提问于 2018-08-21 02:07:31
回答 1查看 79关注 0票数 0

我有一个rails应用程序,其中我在控制器中包含了一个api密钥。在控制器中,我有:

代码语言:javascript
复制
def email_signup
    email_address = params[:email_address]

    url = URI("https://api.sendgrid.com/v3/contactdb/recipients")

    http = Net::HTTP.new(url.host, url.port)
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE

    request = Net::HTTP::Post.new(url)
    api_key = ENV['SENDGRID_API_KEY']
    request["authorization"] = "Bearer #{api_key}"
    request["content-type"] = 'application/json'
    request.body = [{"email": email_address}].to_json

    response = http.request(request)
    result = JSON.parse(response.body)
    Rails.logger.info "api_key is: #{api_key}"
    Rails.logger.info "Email response is: #{response.read_body}" #uncomment to view response/debug
    # redirect_to jobs_url, notice: result["errors"]

    redirect_to jobs_url, notice: "Thanks for Signing Up"
  end

在我看到的日志中:

代码语言:javascript
复制
I, [2018-08-17T19:54:17.439705 #24726]  INFO -- : [f0fce3e4-8574-49d4-84f9-a52c8e7cec24] api_key is:
I, [2018-08-17T19:54:17.439807 #24726]  INFO -- : [f0fce3e4-8574-49d4-84f9-a52c8e7cec24] Email response is: {"errors":[{"field":null,"message":"authorization required"}]}

所以看起来环境变量ENV['SENDGRID_API_KEY']没有被读取。但是获取this...if我打开rails控制台并输入ENV['SENDGRID_API_KEY'],我看到了API键/字符串。

你知道为什么这不起作用吗?

EN

回答 1

Stack Overflow用户

发布于 2018-08-21 03:31:25

感谢Arup找到了解决方案。我采纳了他的建议,将以下内容添加到我的/etc/nginx/sites-enabled/default中,从而在passenger中添加了环境变量

代码语言:javascript
复制
passenger_env_var SENDGRID_API_KEY <my_key_here>;

...and这个很好用。这很奇怪,因为即使我已经将环境变量添加到/etc/environment中,并且可以从控制台打印环境变量,但出于某种原因,Rails中的控制器仍然不能获取这些变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51936312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档