JavaScriptで次のように複数のファイルに依存関係があるとき、
zzz.coffee
window.ZZZ =
create: (name) ->
# ....
aaa.coffee
AAA = ZZZ.create('aaa')
require_treeだとアルファベット順に読み込まれるのでうまく動かない。
application.jsで順番を一つづつ指定して読み込ませるというのも流石に面倒すぎる。
こんな時はaaa.coffeeにrequireを記述すればいい。
aaa.coffee
#= require 'zzz'
AAA = ZZZ.create('aaa')
よく考えたら当たり前かもしれないけど盲点でした。