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個目以降、作れなくてそもそも想定されてないんだーとかびっくりした