我在yelp.rb中将此代码作为初始化程序:
Yelp.client.configure do |config|
config.consumer_key = ENV['config.consumer_key']
config.consumer_secret = ENV['config.consumer_secret']
config.token = ENV['config.token']
config.token_secret = ENV['config.token_secret']
end
我有一个yelp.yml文件加载所有这些,它在开发中很有用。
一旦我将它推送到heroku(我的所有密钥都设置在Heroku中并且三重验证没有拼写错误)我收到此错误'Yelp :: Error :: MissingAPIKeys:你错过了一个API密钥“
我在开发中运行Rails C中的代码(见下文)并且它通过,在Heroku端的Rails c中运行完全相同的代码,我得到了该错误。我甚至尝试了它而不使用ENV并使用了确切的api密钥和相同的错误。
client = Yelp::Client.new({
consumer_key = ENV['config.consumer_key'],
consumer_secret = ENV['config.consumer_secret'],
token = ENV['config.token'],
token_secret = ENV['config.token_secret'] })
生产与开发有何不同?
更新: 搞定了...... 我能够以这种方式工作......
def index
current_user.zip_code.present? ? @zip = current_user.zip_code : @zip = "94101"
parameters = { term: 'auto repair', limit: 9 }
@search = client.search(@zip, parameters)
end
private
def client
@client ||= Yelp::Client.new({ consumer_key: ENV['config.consumer_key'],
consumer_secret: ENV['config.consumer_secret'],
token: ENV['config.token'],
token_secret: ENV['config.token_secret']
})
end
答案 0 :(得分:1)
运行heroku config --app app-name
以检查配置变量是否正确设置,如果看起来正确的话。然后尝试使用heroku run rails console --app app-name
在Heroku上运行rails console来检查Yelp::Client
是否正在正确加载env
。
如果您只是遵循gem readme中提供的ENV
命名约定,则可以完全避免此问题。
Yelp.client.configure do |config|
config.consumer_key = YOUR_CONSUMER_KEY
config.consumer_secret = YOUR_CONSUMER_SECRET
config.token = YOUR_TOKEN
config.token_secret = YOUR_TOKEN_SECRET
end