Heroku上的Yelp红宝石宝石

时间:2015-07-23 22:45:34

标签: ruby-on-rails ruby heroku gem yelp

我在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

1 个答案:

答案 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