Web API の consumer_key と consumer_secret のような、 人に知られたくないキーは Git リポジトリに含めたくない。 そこでキーを git リポジトリ管理外の設定ファイルに抜き出すことにした。
設定ファイルを読み込んで RubyMotion でいい感じに扱うための gem で RubyMotion Wrappers に載っているのは、motion-config-vars ていうやつ。
motion-cofnig-vars
resources/app.yml に
API_ENV: development: cosumer_key: "hogehoge" consumer_secret: "fugafuga" test: cosumer_key: "hogehoge" consumer_secret: "fugafuga" production: cosumer_key: "hogehoge" consumer_secret: "fugafuga"
って書いて、
bundle exec rake API_ENV=development
で実行すれば、development 以下の設定を ENV にセットしてくれる。 ただ、API_ENV を毎回指定するのが面倒。おしい。
RubyMotion Wrappers には載ってない gem
motion-mode 作者でもある ainame 氏が作った motio-my_env がある。 Watson 氏が作った motion-env-vars もある。
自分は motion-my_env を使ってる。 motion-env-vars は最近知ったのでまだ試していない。 README 読んだ感じだと、使い方同じっぽい。
motion-my_env
config/environment.yaml に設定を書いて
hatena: consumer_key: "hogehoge" consumer_secret: "fugafuga"
Rakefile 内で yaml ファイルのパスを指定する。
Motion::Project::App.setup do |app| # ... app.my_env.file = "./config/environment.yaml" # ... end
するとアプリ内で
MY_ENV["hatena"]["consumer_key"] # => hogehoge
という風にアクセスできる。 YAML をパースした結果が MY_ENV 定数に格納されるようだ。