RubyMotionでCocoaPodsを使う
CocoaPodsはRubyで言うとBundlerみたいなもの。
Objective-Cのプロジェクトにおいてライブラリの依存性を管理して使いやすくしてくれる。
podとして提供されているライブラリの一覧はここにまとまっている。
RubyMotionでもこのCocoaPodsを利用できる。
以下だいたい公式のドキュメント通り。
CocoaPodsのインストール
まずはCocoaPodsを入れてセットアップする。sudoはRVMを使っているなら不要。
$ [sudo] gem install cocoapods $ pod setup
motion-cocoapodsのインストール
次にRubyMotionからCocoaPodsを使うためのmotion-cocoapodsを入れる。
$ [sudo] gem install motion-cocoapods
Rakefileの修正
RubyMotionプロジェクト内のRakefileを修正する。
$:.unshift("/Library/RubyMotion/lib") require 'motion/project' require 'motion-cocoapods' Motion::Project::App.setup do |app| # Use `rake config' to see complete project settings. app.name = 'Hello' app.identifier = 'jp.brassworks.Hello' app.pods do dependency 'JSONKit' dependency 'Reachability' dependency 'FMDB' end end
これで指定したライブラリが使えるようになる。
podはrakeした時に自動的にダウンロードおよびビルドされるので、このほかには何もしなくて良い。
これはいろいろと捗る。
不具合への対応
現時点でのmotion-cocoapodsには不具合があってちょっと細工をしないとうまく動かない。レポートは上がっているので早晩この問題はなくなると思うが、とりあえずその場しのぎに。
/Library/RubyMotion/lib/motion/project/vendor.rbの修正
77行目を以下のように書き換える
- objs = Dir.glob('*/**/*.o') + objs = (Dir.glob('*/**/*.o') + Dir.glob("*.o") + Dir.glob("*/*.o")).uniq
rake –traceで実行する
この状態でrakeしてもなにやらエラーが出てうまくいかないが、rake –traceで実行するとうまく動く。
とまあ、リリースされたばかりと言うことでちょこちょこ問題はあるが、早くもRubyMotion 1.1が出たりと動きは速いので、こちらも早々の修正を期待したい。
ちなみにいきなり不具合のエントリーを上げてしまったけど、だいたいの部分ではちゃんと動き過ぎて面白いというか驚いてる。
2012/05/07追記
不具合はRubyMotion 1.2で修正された。