RubyMotion Advent Calendar 2013 11日目です。
予てより作ってみたかったbundle gemしたときのようなRubyMotion用gemテンプレートを作ってみました。
RubyMotionのテンプレートの作成の方法は、RubyMotion Advent Calendar 6日目にmeganemuraさんが RubyMotion テンプレートの基本/作り方/gem 化 で書いてくれているのでそちらを参考にしてみるとよいでしょう。
さて、使い方はmotion create
コマンドの--template
オプションにテンプレートのリポジトリを指定して実行するだけです。
試しにmotion_foo
というgemを作ってみる場合は、次のようなコマンドを実行します。
$ motion create motion_foo --template=https://github.com/toshiwo/bundler_style_template.git
Create motion_foo
Create motion_foo/.gitignore
Create motion_foo/app/app_delegate.rb
Create motion_foo/Gemfile
Create motion_foo/lib/motion_foo/version.rb
Create motion_foo/lib/motion_foo.rb
Create motion_foo/LICENSE.txt
Create motion_foo/motion/motion_foo.rb
Create motion_foo/Rakefile
Create motion_foo/README.md
Create motion_foo/resources/Default-568h@2x.png
Create motion_foo/spec/main_spec.rb
Create motion_foo/motion_foo.gemspec
コマンドを実行すれば、後はmotionコマンドが自動的にgit cloneやtemplateファイルの配置などを行ってくれます。
また、一度templateを使った後は ~/Library/RubyMotion/template
にcloneしたtemplateが配置されるので、次回からcloneすることなく、利用することができます。
つまりmotion create motion_bar --template=bundler_style_template
で済むと言うことですね。
(もちろん不要になったら自由に削除もできます)
$ ls -l ~/Library/RubyMotion/template
total 0
drwxr-xr-x 5 toshiwo staff 170 12 10 20:25 bundler_style_template
しかしながら、このテンプレート、 現時点での最新版であるRubyMotion 2.16では期待通りに動作しません
このテンプレートを正しく動作させるためには、次のver(恐らく2.17以降)のRubyMotionが必要になりると思います。
(送ったPull RequestはRubyMotionに取り込まれてはいるのですが、そのPRが含まれたverまだリリースされていないのです・・・涙)
2.17がリリースされた際、RubyMotion用のgemを作る際、このテンプレート是非使ってもらえるとうれしく思います。
(あるいはgithubにあるRubyMotionを使うことで、このテンプレートを使うことも可能です)
ここからは、利用者向けにこのテンプレートで生成されるファイルの説明です
生成されるファイルは大きく分けて4種類あります。
まず、このグループはbundle gemした場合と同様のファイルが生成されるようにしてあります。
bundlerでのgemの開発になれている人なら普通に編集しながらgemを開発することができると思います。
- Gemfile
- LICENSE.txt
- Rakefile
- README.md
- motion_foo.gemspec
次に、このグループはbundle gemした場合とほぼ同等ですが、lib/motion_foo.rb
にはRubyMotion用に必要なコードが記述されています。
開発中はほぼ修正することはないと思います。
- lib/motion_foo/version.rb
- lib/motion_foo.rb
3つめのグループは、RubyMotionでrake spec
を走らせるために必要なAppDelegate
が入ったファイルとアイコンのファイルです。
作りたいgemによってはAppDelegateの中を変更する必要があるかもしれませんが、恐らくこちらもあまり変更する必要はないと思います。
- app/app_delegate.rb
- resources/Default-568h@2x.png
最後にこのグループのファイルが主にRubyMotion用のgemを開発する際に変更していくファイルになります。
- motion/motion_foo.rb
- spec/main_spec.rb
またmotion createした直後でも、テストが1つが自動で生成されるようになっています。
生成後はまずは```rake spec````してみるの良いかもしれません。
以上で、簡単な生成されるファイルの説明でした。
現在、このテンプレートを使ってRubyMotion用のgemを作っていますが、もしその工程の中で足りない部分やうまく動作しない部分など出てきたらテンプレートともどもアップデートしていく予定なので、良かったら使ってみてください。