railroadで、サブディレクトリ切ってると解析してくれない不具合

最近、generateされなくて、推奨されてない方法だったんだ。*1ってわかったんですが、
rails1.2系の頃、controllersに、「manage/account_controller.rb」とか作って
管理画面は、全部manage配下に作ったりって言う方法でrailsプロジェクトが作られてました。


さて、プロジェクトを解析してくれるrailroadというツールがあります。
昔、ActiveHeartでset_field_nameしたカラム名をrailroadで出力するとかカスタマイズした事があるツールなんですが、
コントローラやモデルの構成を図にしてくれる便利なツールです。


しかし、このapp/controllers/manage/account_controllerとかを解析しようとすると、

/Users/takase/project/sample_app/vendor/rails/activesupport/lib/active_support/dependencies.rb:431:in `load_missing_constant': uninitialized constant AccountController (NameError)

AccountControllerクラスが無いと怒られてしまいました。
というわけで、これをManage::AccountControllerに解析する様カスタマイズ。


railroadの
lib/railroad/app_diagram.rb
というファイルを、

<     File.basename(filename).chomp(".rb").camelize
---
>     prefix_classes = []
>     controller_path = /app\/controllers\//
>     model_path = /app\/models\//
> 
>     check_path = nil
>     if filename =~ controller_path
>       check_path = controller_path
>     else filename =~ model_path 
>       check_path = model_path
>     end
> 
>     if check_path
>       prefix_class_names = filename.to_s.split(check_path).last
>       File.dirname(prefix_class_names).each do  | prefix_class_name |
>         prefix_classes << prefix_class_name.camelize  unless prefix_class_name.blank? || prefix_class_name == "."
>       end
>       prefix_classes << File.basename(filename).chomp(".rb").camelize
>     end
>     prefix_classes.join("::")

の用に変更したっす。

*1:rails2.1とかでgenerateしようとして、2個目以降、作れなくてそもそも想定されてないんだーとかびっくりした