2012年11月05日

Herokuのconfig varをローカル環境下のスクリプト内で取得するには(heroku-api版)

AMAgrammar <> PROgrammer: Herokuのconfig varをローカル環境下のスクリプト内で取得するには

……という記事を以前書いたが、何時の間にやらheroku gemを使う方法がdeprecatedになっており、以下のような感じで警告文が出力されるようになっていた。

require 'heroku'

EMAIL = '(Herokuに登録した時に使ったメールアドレス)'
PASSWORD = '(Herokuのパスワード)'
APPLICATION = '(アプリケーション名)'

heroku = Heroku::Client.new(EMAIL, PASSWORD)
vars = heroku.config_vars(APPLICATION)
 !    DEPRECATED: Heroku::Client#deprecate is deprecated, please use the heroku-api gem.
 !    DEPRECATED: More information available at https://github.com/heroku/heroku.rb
 !    DEPRECATED: Deprecated method called from /usr/lib/ruby/gems/1.9.1/gems/heroku-2.32.14/lib/heroku/client.rb:129.

どうやら今後はheroku-apiというgemを使えばいいらしい。早速gem installして、GitHubのREADME.md(と、heroku-apiのコード)を読みつつ書き換える。

require 'heroku-api'

EMAIL       = '(Herokuに登録した時に使ったメールアドレス)'
PASSWORD    = '(Herokuのパスワード)'
API_KEY     = '(API Key)'
APPLICATION = '(アプリケーション名)'
KEY         = '(値を取得したいconfig varのKEY)'

# API Keyが解っている場合
heroku = Heroku::API.new(:api_key => API_KEY)

# API Keyが解らない場合 (Thank you geemus!)
heroku  = Heroku::API.new(:username => EMAIL, :password => PASSWORD)

# APPLICATIONの全config varを取得
vars = heroku.get_config_vars(APPLICATION).body

pp vars

heroku-apiの各種APIの戻り値は大体Excon:Responseのインスタンスになってるっぽい。

以前は出来たHeroku::Auth.clientと同等の方法、herokuコマンドの認証情報を使うというのは出来なくなっているようだ。冷静に考えてみたら、herokuコマンドの認証情報を第三者のアプリケーションから利用出来るとか、セキュリティホールになり得るしねぇ。仕方ないか。

API Keyであれば、(以前の)メールアドレスとパスワードに拠る認証よりはセキュアなのではないか、多分。READMEに書かれているように、API Keyは環境変数HEROKU_API_KEYを設定しておけばそれを利用するようになっている。なお、API KeyはHerokuのAccountページから確認と再生成が可能だ。

ラベル:ruby heroku
posted by 天井冴太 at 17:00| Comment(0) | TrackBack(0) | Study | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください

この記事へのトラックバック