こんにちは!qnypの"そろそろこの入り方も潮時かなと感じている方"あさくらです。先日Ti Gemというフレームワークでハマったところがあったのでシェアしておこうと思います。
Ti Gemとは
Ti Gemは “A rapid development framework for titanium.” とあるようにTitanium Mobile(とTitanium Desktop)の開発を加速させるフレームワークです。名前の通りgemとして提供されていて、使用するにはRuby環境が必要なため少し面倒に感じるかもしれませんが、以下のようなフィーチャを備えていてなかなかいい感じです。
- コマンドラインからテンプレートを使ってTitaniumプロジェクトをジェネレートできる
- WindowやView単位のジェネレートも可能
- コードはCoffeeScriptで記述されJasmineテストも一緒に出力してくれる
- コンパイルやビルドコマンドも用意されている
早速使ってみたらうまくいきませんでした
README
の内容をもとにセットアップを行いTitanium Mobile
プロジェクトをジェネレートしようとしたのですが、タブ画像ファイルが無いよとエラーになってしまいました。
$ ti new Fuga com.qnyp.fuga iphone
...
~/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/fileutils.rb:1423:in `stat': No such file or directory - ~/Sites/titanium/sample_apps/Fuga/Resources/KS_nav_ui.png (Errno::ENOENT)
原因を調査してみました
issuesにそれっぽい課題が上がっていたので原因を調査してみました。
#27: Cannot Create Project (Master) - Issues - revans/Ti - GitHub
コードを読み進めるとエラー発生箇所ではtitanium.py
でジェネレートした初期コードを上書きしていることがわかりました。
https://github.com/revans/Ti/blob/master/lib/ti/generate/project.rb#L15
さらに読み進めていくと上書きされるべき初期コードを生成しているgenerate_titanium_project
で該当のジェネレートコマンドがBash
で実行されていることがわかりました。
https://github.com/revans/Ti/blob/master/lib/ti/generate/project.rb#L80
私はZsh
を利用しているのでREADME
のtitanium
コマンドのalias
を.zsh_profile
へ追記したのですが、肝心のジェネレートコマンドを実行するのはBash
だったため"command not found"
で必要な初期コードが生成されていなかった。というのが原因のようです。
じょうずにできました
上記を踏まえてREADME
にあるように.bash_profile
へ設定を追加したところ無事にTitanium Mobile
プロジェクトをジェネレートすることができました。CoffeeScript
, Jasmine
, Ruby
など個人的に好ましい技術が盛り込まれているTi Gem
さんなのでいろいろ試していきたいです。まるっ