我有一个RubyMotion项目需要比其他人更早地加载某些目录和文件。
我想在/lib
目录文件之前加载/app
目录文件。
研究提出了许多方法来调整负载顺序,但没有明确的答案恕我直言。
这是我迄今为止所发现的。
要设置应用程序文件加载顺序,请使用Rakefile App设置块:
Motion::Project::App.setup do |app|
# ... put your code here
end
选择目录:
app.files =
Dir.glob('./lib/**/*.rb') |
Dir.glob('./app/**/*.rb')
使用依赖项:
app.files_dependencies \
'app/child.rb' => 'lib/parent.rb'
要在gems:
之前将文件添加到加载顺序的开头app.files.unshift \
Dir.glob('./lib/**/*.rb')
使用BubbleWrap gem:
BW.require './lib/**/*.rb'
使用Motion Dependencies gem:
app.files =
Dir.glob('./lib/**/*.rb') |
Dir.glob('./app/**/*.rb')
app.files_dependencies Motion::Dependencies.find_dependencies(app.files)
首先加载供应商包文件,然后加载库文件,然后是其他所有内容 - 这对我来说似乎是最好的解决方案。
app.files = (
app.files.select{|f| f =~ %r(/vendor/bundle/) } +
app.files.select{|f| f =~ %r(/lib/) } +
app.files
).uniq
有更明确的方式吗?