RubyMotion app文件加载顺序:如何在其他文件之前加载lib文件?

时间:2014-08-11 22:05:05

标签: rubymotion

我有一个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

有更明确的方式吗?

1 个答案:

答案 0 :(得分:1)

老问题,但我的观点是你的最终解决方案看起来最好。我也喜欢DBT gem,但我通常只在宝石上使用它。