RubyMotion は Smart File Dependencies 機能があるので、依存ファイルを自動で解決してくれる。 でも、たま~に解決できなくて定数未定義エラーに遭遇するときがある。
そんなときは Rakefile で files_dependencies を記述すればいいんだけど、 依存しているファイルの指定は、できれば使っている箇所のすぐそばに書きたいよね。
そこで motion-require の出番。
インストールは Gemfile に
gem 'motion-require'
を書いて bundle install すればおk。
motion_require メソッドを使って、 Ruby の require みたいに、依存しているファイルを記述できるようになる。
motion_require "bases/base_list_view_controller" class EntryListViewController < BaseListViewController end
という風に依存ファイルを指定し、Rakefile に
# -*- coding: utf-8 -*- $:.unshift("/Library/RubyMotion/lib") require 'motion/project/template.ios' begin require 'bundler' Bundler.require rescue LoadError end # これを追加 Motion::Require.all Motion::Project::App.setup do |app| # ... end
と書いておけば、ビルド時に motion_require をもとに依存関係をかき集め、 プロジェクトに設定してくれる。
ソースコードを読めば分かるけど、motion_require はただのマークであって、 実際にファイルを読み込んだりはしない。
通常は RubyMotion の Smart File Dependencies にまかせておいて、 失敗する箇所にだけ motion_require を使うのがお勧めかな。