Rails / Heroku:设置代码以在运行时读取变量

时间:2012-01-02 19:51:00

标签: ruby-on-rails heroku

我创建了一个使用Twitter Ruby gem的网站。在本地主机上,我可以让Twitter宝石工作正常,但当我将它部署到Heroku时,我无法通过Twitter登录。

Heroku提供有关添加CONSUMER_KEY和CONSUMER SECRET的说明(使用Amazon S3变量)

$ cd myapp
$ heroku config:add S3_KEY=some_key_here S3_SECRET=some_secret_here

我做到了。

然后当我去测试登录时,我会在网址中找到它。这个网址与(在本地主机上)忘记添加CONSUMER_KEY等时相同,所以我认为我没有在Heroku上正确设置CONSUMER_KEY和CONSUMER_SECRET ... enter image description here

Heroku提供了有关在config / initalizers中设置文件以在运行时读取变量的更多详细信息,但我认为我分叉然后调整的Github项目已经设置https://github.com/sferik/sign-in-with-twitter/blob/master/config/initializers/omniauth.rb所以我不确定这是怎么回事。

Set up your code to read the vars at runtime in config/initializers/s3.rb:

AWS::S3::Base.establish_connection!(
  :access_key_id     => ENV['S3_KEY'],
  :secret_access_key => ENV['S3_SECRET']
)

更新

当我尝试通过Twitter登录时,

在Heroku日志中出现错误消息。请注意,我可以通过本地主机登录。

2012-01-02T20:01:43+00:00 app[web.1]: 
2012-01-02T20:01:43+00:00 app[web.1]: Started GET "/auth/twitter?utf8=%E2%9C%93" for 64.46.7.250 at 2012-01-02 20:01:43 +0000
2012-01-02T20:01:44+00:00 app[web.1]: 
2012-01-02T20:01:44+00:00 app[web.1]: OAuth::Unauthorized (401 Unauthorized):
2012-01-02T20:01:44+00:00 app[web.1]: 

1 个答案:

答案 0 :(得分:1)

这可能是两件事之一。

您的密钥设置不正确,或者Twitter OAuth回调返回的路径不正确(因为它处理不正确)。

最容易检查的是你的Heroku配置:

heroku config --app your_app_name

这应显示CONSUMER_KEYCONSUMER_SECRET(我假设您使用上面的S3_KEYS3_SECRET是占位符)

如果此配置正确,并且它仍然无效,您将需要深入处理返回到您的应用程序的请求。它似乎是应该处理/ auth / twitter,但在这一步中它不正确。