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ページから確認と再生成が可能だ。