akadama

そこらへんにいるプログラマが適当にやってます

RubyMotionでユーザーテンプレートを使ってみる

今日は RubyMotionTokyo meetup#2 に行ってきました。
あまりやることを決めてなかったのでエディタ周りを調べた後は、ProMotionを試したりソースを読むことに。

便利そうだなと思ったんだけどmotion createするたびに毎回Gemfile作って、app_delegate.rbをProMotion用に修正というのはちょっと面倒。
そこで @watson1978 さんにRailsのApplication Templateのような仕組みは無いか聞いてみたところ、 RubyMotionは標準のios,osxのテンプレート以外にも、ユーザーが定義したテンプレートも利用可能とのこと。

試しにテンプレートを作ってみることにした。

/Library/RubyMotion/lib/motion/project/template.rb を見るとユーザーテンプレートの置き場は ~/Library/RubyMotion/template になっているのでこれを作る。
とりあえず既存のios用テンプレートをコピーしてこのテンプレートが呼べるかを確認。

mkdir -p ~/Library/RubyMotion/template/
cd ~/Library/RubyMotion/template/
cp -r /Library/RubyMotion/lib/motion/project/template/ios user_template
motion create sample --template=user_template

sampleにテンプレートにiosを使ったときと同じファイルが出来ていることを確認。
次にProMotionを導入してみる。

と言っても、やるべきはテンプレートのフォルダのfilesにちょっと変更をするだけ。
Gemfileを作って Rakefile、app_delegate.rbにも手を加える。

  • Gemfile
source 'https://rubygems.org'

gem 'rake'
gem 'ProMotion'
  • Rakefile
# -*- coding: utf-8 -*-
$:.unshift("/Library/RubyMotion/lib")
require 'motion/project/template/ios'

require 'bundler'
Bundler.require

Motion::Project::App.setup do |app|
  # Use `rake config' to see complete project settings.
  app.name = '<%= name %>'
end
  • app_delegate.rb
class AppDelegate < PM::Delegate
  def on_load
  end
end

bundle installをして再びmotion create。

bundle install
motion create sample --template=user_template

ProMotionが使えるようになってる!
使うライブラリだったりがまとまってきたら、あらかじめテンプレート化することで開発が捗りそうですね。