by shigemk2

当面は技術的なことしか書かない

APIキーなんかを設定ファイルにぶっこむ

f:id:shigemk2:20131208004058j:plain

参考にした記事

RubyMotion の小ワザ - satococoa's blog

概要

毎回 Rakefile に testflight の token を書くのは面倒ですし、Rakefile がごちゃっとしますよね。

APIキーとか、あんまり人に晒したくないものあると思うので、 .gitignoreで本物のyamlファイルはGitの追跡から逃れつつ 開発できます。

config.yml.sample

testflight:
  api_token: API TOKEN
  team_token: TEAM TOKEN

development:
  provisioning: '/path/to/file'

tinami:
  api: TINAMI API

で、書き方。TestFlightのトークンはともかく、 APIキーとかどうすんだっていうのでちょっとハマりました。

Rakefile

Motion::Project::App.setup do |app|
  # Use `rake config' to see complete project settings.
  app.name = 'TinamiReader'
  require 'yaml'
  conf_file = './config.yml'
  if File.exists?(conf_file)
    config = YAML::load_file(conf_file)
    app.testflight.sdk        = 'vendor/TestFlightSDK'
    app.testflight.api_token  = config['testflight']['api_token']
    app.testflight.team_token = config['testflight']['team_token']

    app.info_plist['TINAMI_API'] = config['tinami']['api']

    env = ENV['ENV'] || 'development'
    app.provisioning_profile = config[env]['provisioning']
  end
end

本編にはこのようにぶっこめる。

api = NSBundle.mainBundle.objectForInfoDictionaryKey('TINAMI_API')

こういう書き方は本流じゃないっぽい感じがしなくもないよ。

Rod Wilhelmy : Environment variables in your RubyMotion project

shigemk2/TinamiReader · GitHub