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 | 更新情報をチェックする

なぜJavaScriptでは 10..toString() は動き、 10.toString() は動かないのか

javascript - Why 10..toString() works but 10.toString() does not? - Stack Overflow

非常に興味深かったので紹介。

ちょっとよく解らんっちゃけど。

152..toString(2)

これだとバイナリ文字列"10011000"が正しく生成されるっちゃけど、

152.toString(2)

これだと"SyntaxError: identifier starts immediately after numeric literal"って内容の例外が発生するっちゃんね。

なんで? 後者の方がまともな文で、前者は変な文に見えるっちゃけど?!

確かに。

回答を総合すると、これは、"."が複数の意味を持つ所為だという。即ち、小数点としてのそれと、"object member operator"としてのそれと。

JavaScriptの数値リテラルは小数点の前後の数値が0の場合は、それを省略する事が出来る(Final draft Standard ECMA-262 edition 5.1, March 2011 (Rev. 6) - Ecma-262.pdfの7.8.3 Numeric Literals)。

(1.) == (1.0)	// true
(.1) == (0.1)	// true

因って、"152.toString(2)"は、"152."迄で1つの数値リテラルトークンとして処理され、続く"toString"が解釈出来なくなりSyntax Errorとなるそうだ。

対し、"152..toString(2)"と"."を2つ連続させた場合は、1つ目が小数点、2つ目がobject member operatorとして解釈されるため、正しく処理出来ると。

言われて初めて気づいたが、確かに小数点とobject member operatorは同じ記号だ。あまりにも当たり前すぎて、今までまったく気にかけた事がなかったなぁ……

object member operator
この回答で使われていた言葉を拝借。オブジェクトとそのメンバを区切る"."記号の事。EcmaScriptの規格書を簡単に攫ってみたが、この"."の正式な名称はよく分からなかった。
ラベル:javascript EcmaScript
posted by 天井冴太 at 04:51| Comment(0) | TrackBack(0) | Study | 更新情報をチェックする

2012年11月01日

2012年度のAdvent Calendarメモ

もうそんな時期か……目について気になるAdvent Calendarのメモ。

何処かにメモしとかないとすぐ忘れちゃうからね。

随時追加予定。

あと、JavaScriptとRubyあたりのAdvent Calendarが欲しい所。

勿論こんなに読める訳無いので、タイトル見て気になったものだけ読む方向で。そうして考えるとタイトル重要だな(今更)。

昨年はBoost Advent Calendarに参加して以下の記事を書いた。

BOOST_TEST_DONT_PRINT_LOG_VALUE()が効くBOOST_CHECK_EQUAL_COLLECTIONS()を作る

今年は……どうしようかな。ネタがないなぁ……

posted by 天井冴太 at 22:17| Comment(0) | TrackBack(0) | Other | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は180日以上新しい記事の投稿がないブログに表示されております。