bundle gemっぽいRubyMotionテンプレートを作ってみた

  • 8
    Like
  • 0
    Comment
More than 1 year has passed since last update.

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の中を変更する必要があるかもしれませんが、恐らくこちらもあまり変更する必要はないと思います。

最後にこのグループのファイルが主にRubyMotion用のgemを開発する際に変更していくファイルになります。

  • motion/motion_foo.rb
  • spec/main_spec.rb

またmotion createした直後でも、テストが1つが自動で生成されるようになっています。
生成後はまずはrake spec`してみるの良いかもしれません。

以上で、簡単な生成されるファイルの説明でした。

現在、このテンプレートを使ってRubyMotion用のgemを作っていますが、もしその工程の中で足りない部分やうまく動作しない部分など出てきたらテンプレートともどもアップデートしていく予定なので、良かったら使ってみてください。