2013-06-28 226 views
0

我在远程服务器上使用Devise(用于身份验证)和omniauth gem的Rails应用程序。当我过去部署到Heroku时,我可以在终端中设置环境变量,但这不是我使用的远程服务器提供的。所以我说希望将设置在Devise.rb配置文件未设置.bashrc中的环境变量

config.omniauth :twitter, ENV["TWITTER_KEY"], ENV["TWITTER_SECRET"] 

但是环境变量,当我试图与Twitter登录以下到.bashrc

export TWITTER_KEY="LxAuQ1Chmas;dlfkjdsal;fjds" TWITTER_SECRET="CC2XpLOeMJbvYphlafsdlkfjdsalkfj" 

下,我得到这个

OAuth::Unauthorized (401 Unauthorized): 
    oauth (0.4.7) lib/oauth/consumer.rb:216:in `token_request' 
    oauth (0.4.7) lib/oauth/consumer.rb:136:in `get_request_token' 
    omniauth-oauth (1.0.1) lib/omniauth/strategies/oauth.rb:29:in `request_phase' 
    omniauth-twitter (1.0.0) lib/omniauth/strategies/twitter.rb:63:in `request_phase' 
    omniauth (1.1.4) lib/omniauth/strategy.rb:214:in `request_call' 

所以我假设环境变量不能被正确读取。你能否以另一种方式解释我可以设置它们?

回答

1

我会建议使用figaro gem管理环境变量。

将环境变量放在yaml配置文件中,它们将在ENV中可用。

它还提供了一个有用的rake任务来设置Heroku上的变量。

+0

我早先在我的本地机器上尝试过figaro,无法启动它。我想也许它还没有准备好Rails 4。 – Leahcim

+0

@Leahcim你试过哪个版本的figaro? 0.6.0之后的版本应该支持Rails 4.我建议尝试最新版本(0.7.0)。 – Domon

+0

我昨天安装了最新的figaro,但没有奏效。如果我对ap​​i信息进行了硬编码,网站工作正常,所以我肯定这个错误来自我设置环境变量的方式,无论是使用figaro还是bashprofile。费加罗的死的简单,我将按照application.yml这样没有成功'TWITTER_KEY的例子环境变量:“LxAuQ1ChmG5dfljafkjdsalkfjg” TWITTER_SECRET:“CC2XpLOeMJbvYphfCyTQdlIsfljadsfkljadslkfjs”' – Leahcim