2007年 06月 19日

アレェ。なんで xcodebuild で plist が読めないよ! とか怒られるんだろう。ML のテストがとおらないのもこれのせいっぽいなぁ。

というかテストの書きかたがわるいよなぁ。せっかく Ruby でかいてるんだから require して new しまくったほうがいい予感だ。

xcodebuild がだめなのは別の問題だ。てか ML のテストはうちの環境だと再現しない?

テスト変更
http://rubycocoa.svn.sourceforge.net/viewvc/rubycocoa/trunk/src/framework/tool/rubycocoa/test/test_rubycocoa.rb?r1=1846&r2=1845&pathrev=1846

テスト失敗したときのエラーメッセージがもうちょいマシになるはず……

2007年 06月 15日

Xocde lproj

lproj を追加するときは nib を右クリックしてアレするみたいだけど、plist の中身を見てのなかなかよくわからない構造になっててどうしたらいいのかなぞい。
add のときに lproj だったら特別な処理が必要だよなぁ。lproj 内の nib スキャンしてほげほげとかやんないとだめかなぁ。滅多に追加しないから Xcode でやればいい気もする。


あと nib を dictionary(?) つかって更新するようにタスクを書いてあるけど、これ Rakefile に書いてしまうと Xcode でビルドしたときまずい。というか Xcode と IB だけで開発するとき (nibtool つかわない) って多言語化はどうやってるんだろう……

2007年 06月 14日

Xcode TemplateInfo.plist

ってなんなんだろ。いま単純に消してしまっているけど、なんかたぶん設定が書かれるんだよなぁ。

FilesToMacroExpand だけ処理すればよくて、あとリネーム規則がかかれるっぽいけど、どっかに詳しい説明がないかなぁ

project.pbxproj は FilesToMacroExpand になくても強制的に変換されるっぽい

http://rubycocoa.svn.sourceforge.net/viewvc/rubycocoa?view=rev&revision=1838

2007年 06月 12日

setter

@textfield.stringValue += "aaa"

とか書けて楽だなぁ

2007年 06月 11日

rubycocoa create

なまえがまずい気がする。いいかなぁ。( http://rubycocoa.svn.sourceforge.net/viewvc/rubycocoa?view=rev&revision=1834 )

rubycocoa new Sample
cd Sample
rubycocoa create --action hello AppController
vim AppController
rubycocoa update English.lproj/MainMenu.nib AppController.rb
open English.lproj/MainMenu.nib # instantiate / connect
rake add AppController.rb
rake # launch

create したら同時に add したほうが忘れなくていいかな。
rake create, rake update をつくって委譲するみたいな感じのほうがよさそう。rubycocoa ってながいのと補完が効かない (ruby, ruby1.9 が PATH にあるので一発ででてこない) のと、どっちつかったらいいか謎いのが不親切。

  • add するときプロジェクト内にファイルが既に存在するかチェックしないとまずい

あーだめだなぁ。rake create -a hello AppController.rb とかやると、タスクが実行されるまえに -a を Invalid Option って判断して終了してしまう。

rake tasks for rubycocoa

http://rubycocoa.svn.sourceforge.net/viewvc/rubycocoa?view=rev&revision=1836

if ["update", "add", "create"].include? ARGV[0]
  # dupe rake
  ARGV.map! {|a| a.sub(/^¥+/, "-") }
  Rake.application[ARGV[0].to_sym].invoke
  exit
end

こんなん書いてしのいでみた。なんてキモいんだろう。これで rake から create したときは add も同時にされるようになり、add のときに Xcode project ファイルを指定する必要がなくなり、update のときもテンプレで最初から入ってる nib を更新するようになった。

rubycocoa new Sample
cd Sample
rake create +a hello AppController # ハイフンにすると rake が解釈しちゃうのでしかたなく……
vim AppController.rb
rake update AppController.rb
open English.lproj/MainMenu.nib
rake

update は updatenib とかいうタスク名にしないとわけわかんない気がする

rubycocoa 側の機能にするか、rake タスクにするかで悩むけれど、rake タスクにしとけば自分でいぢれるようになるので rubycocoa 側はそんなにいろんなことしなくていいかなぁと思う感じにしてみている。なので rake タスクも Rakefile 直書きでライブラリとかにしてない。

2007年 06月 10日

obj.to_plist, OSX.load_plist

こんなのあったんだ……

rubycocoa

できてるところまでチェックイン。インデントの設定とかを完全に忘れてた。2スペースインデントらしいのでそっちの流儀にあわせた (スペースインデントすることよりも、全体で統一されていないことのほうがまずい) newcocoa と rb_nibtool.rb 相当のことはできるはず、だけれど、テンプレの Rakefile を書いていないのでうまみがすくない。

テストを tests/ においたほうが良いっぽい。とりあえず既存のテストを AutoRunner するだけにしとこう。

  • Rakefile 書いてない
  • Xcode 関連も書いてない

rubycocoa Rakefile

一番簡単なテンプレにだけとりあえず Rakefile を追加。内容はほとんど [Rubycocoa-devel 906], [Rubycocoa-devel 907] のコピペ。
引数なし rake でビルドからアプリケーション起動までやるようにしてみて、ためしに Hello World を Console.app に表示するやつを作ってみたけど、Interface Builder で繋ぐ部分だけ GUI であとは CUI でできるようになって結構気持ちいい。Interface Builder でアクションとか設定するより Ruby 定義から update するのが便利だなぁ。

rubycocoa create AppController.rb とかやるとクラス定義ふくんだ (awakeFromNib とかを定義ずみの) スケルトンつくれるともうちょい楽かなぁ。

  • standalonefy.rb くみこみ
  • package (.dmg) つくるタスクかく
  • publish するタスクかく

ChangeLog

そういえば書いてない。commit log とは別に書かないといけないのかな。svn log すると ChangeLog 形式のログがでてくるけれど、これはコピペで svn と ChangeLog どっちも書いてるのかなぁ。あとあとさかのぼって書いてもいいのか謎

コピぺらしい。なるほど