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で修正された。

前の記事

RubyMotionがすごい

次の記事

Titanium MobileとRubyMotionの比較