From caad0c027cc8109cce279c5143d6ee456cdfb403 Mon Sep 17 00:00:00 2001 From: Mike Mondragon Date: Tue, 29 Jul 2008 16:04:51 -0700 Subject: [PATCH] fixes problems with controllers and models in a namespace --- lib/railroad/aasm_diagram.rb | 2 +- lib/railroad/app_diagram.rb | 7 +++---- lib/railroad/controllers_diagram.rb | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/railroad/aasm_diagram.rb b/lib/railroad/aasm_diagram.rb index af683d6..09aa3b9 100644 --- a/lib/railroad/aasm_diagram.rb +++ b/lib/railroad/aasm_diagram.rb @@ -24,7 +24,7 @@ def generate files += Dir.glob("vendor/plugins/**/app/models/*.rb") if @options.plugins_models files -= @options.exclude files.each do |f| - process_class extract_class_name(f).constantize + process_class extract_class_name('app/models/', f).constantize end end diff --git a/lib/railroad/app_diagram.rb b/lib/railroad/app_diagram.rb index 34c9ab0..8553821 100644 --- a/lib/railroad/app_diagram.rb +++ b/lib/railroad/app_diagram.rb @@ -78,10 +78,9 @@ def load_environment end # Extract class name from filename - def extract_class_name(filename) - #filename.split('/')[2..-1].join('/').split('.').first.camelize - # Fixed by patch from ticket #12742 - File.basename(filename).chomp(".rb").camelize + def extract_class_name(base, filename) + # this is will handle directory names as namespace names + filename.reverse.chomp(base.reverse).reverse.chomp(".rb").camelize end end # class AppDiagram diff --git a/lib/railroad/controllers_diagram.rb b/lib/railroad/controllers_diagram.rb index af1ce8b..901d967 100644 --- a/lib/railroad/controllers_diagram.rb +++ b/lib/railroad/controllers_diagram.rb @@ -20,7 +20,7 @@ def generate files = Dir.glob("app/controllers/**/*_controller.rb") - @options.exclude files << 'app/controllers/application.rb' files.each do |f| - class_name = extract_class_name(f) + class_name = extract_class_name('app/controllers/', f) # ApplicationController's file is 'application.rb' class_name += 'Controller' if class_name == 'Application' process_class class_name.constantize