motion-require
Miss require
? Well, this is a step in that direction:
# in a RubyMotion file
motion_require "base_view_controller"
motion_require "../util/controller_helper"
class MyController < BaseViewController
include ControllerHelper
end
# in your Rakefile
require 'motion/project'
require 'motion-require'
Motion::Require.all
Motion::Project::App.setup do |app|
# ...
end
To enable motion_require
for only select files:
Motion::Require.all(Dir.glob('app/models/**/*.rb'))
# if you're writing a gem that supports iOS and OS X, you might need to filter
# based on the platform:
Motion::Require.all(Dir.glob('lib/ios/**/*.rb'), platform: :ios)
Motion::Require.all(Dir.glob('lib/osx/**/*.rb'), platform: :osx)
You should not use app.files <<
in your setup
block if using motion-require; opt to use Motion::Require.all
and it will be taken care of.
It's used in:
Installation
gem install motion-require
Can also add to your Gemfile
etc
How?
motion-require uses static analysis (via ripper
) to find the files using motion_require
and automatically add the declared dependencies to Motion::Project::Config#dependencies
. Then the Kernel#motion_require
method is overriden at compile-time to be a noop.
The paths attached to motion_require
are treated like those with require_relative
. If you want to use require_relative
instead of motion_require
, you can enable this:
require 'motion-require'
Motion::Require.require_relative_enabled = true
# now Motion::Require will detect require_relative
Motion::Require.all(Dir.glob("app/**/*.rb"))
Contact
Clay Allsopp (http://clayallsopp.com)
License
motion-require is available under the MIT license. See the LICENSE file for more info.