XCodeとRubyの思わぬ関係

2011-02-10
2011-02-10
かなり古い記事です。現在も有効な内容であるかどうか分かりませんのでご注意ください。

Titaniumで構築したiPhoneアプリの実機インストールがうまく行かないので原因を探ったら、なんとMac標準のRubyを無効にしているせいだったという話。XCodeのプラグインがRubyで書かれてたりするんですな。

失敗のビルドログを見たら以下のような箇所を発見。

error: can't exec '/Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/copyplist' (No such file or directory)

copyplistってなんじゃらほい。
ぐーぐる先生に尋ねると以下のページを教えてくれた

原因は

  • /Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/copyplist

の一行目で

#!/usr/bin/ruby

とRubyのパスを指定しているので、ここのパスにRubyがないと動かないというわけだった。
上記のページではシンボリックリンクを張って解決しているが、これをやってもRubyのバージョンが違うせいかライブラリの利用ができないようだったので、シェバングを以下のように書き換えて対応した。

#!/usr/bin/env ruby

これで無事動いた。
XCodeの再インストールでまた動かなくなりそうだけど。

まあ今はRVMあるからMac標準のRuby復活させるというのが一番いい解だろう。

しかしこんなことしなくてもObjective-Cで書いたアプリは普通に動いてたんだけど、copyplistってどういう条件で使われるのだろうか。

Profile

フルスタック気味のフリーランスプログラマー。

どちらかと言うと得意はインフラ構築とサーバーサイドプログラミングですが、フロントエンドもぼちぼちやっています。

最近の興味範囲はWordPress、AWS、サーバーレス、UIデザイン。

愛車はセロー。カメラはペンタックス。旅好きです。横浜在住。