我有一个正在Google Cloud VM实例上运行的Rails应用程序。我已将SSH服务器放入Linux服务器,编辑了etc/environment
文件并添加了新的机密:
export NEW_EXAMPLE_SECRET=example_secret
export NEW_EXAMPLE_URL=https://example.com
这是我的登台服务器,我正在尝试集成自己构建的新API。我有一个接受信息的表格,我正在尝试通过后台作业将信息发送到新的API。我正在使用法拉第发送信息,这是后台作业的样子:
class SendLeadJob < ActiveJob::Base
queue_as :default
def perform(data)
connection.post("#{Rails.application.secrets.base_url.to_s}/api/test", data)
end
private
def connection
Faraday.new do |conn|
conn.request :url_encoded # form-encode POST params
conn.adapter Faraday.default_adapter
end
end
end
我遇到以下错误:
nil:NilClass的未定义方法“ +”
在perform方法中引用URL上的插值:
#{Rails.application.secrets.base_url.to_s}/api/test", data)
为什么应用程序不获取秘密?
当我进入暂存服务器并运行rails控制台,然后执行Rails.application.secrets.base_url
时,我得到了所需的URL,但是该应用程序在实际运行时没有找到它?有人知道为什么会这样吗?