lib/railroady/controllers_diagram.rb in railroady-1.3.0 vs lib/railroady/controllers_diagram.rb in railroady-1.3.1
- old
+ new
@@ -6,17 +6,16 @@
require 'railroady/app_diagram'
# RailRoady controllers diagram
class ControllersDiagram < AppDiagram
-
# as of Rails 2.3 the file is no longer application.rb but instead
# application_controller.rb
APP_CONTROLLER = File.exist?('app/controllers/application.rb') ? 'app/controllers/application.rb' : 'app/controllers/application_controller.rb'
def initialize(options = OptionsStruct.new)
- #options.exclude.map! {|e| "app/controllers/" + e}
+ # options.exclude.map! {|e| "app/controllers/" + e}
super options
@graph.diagram_type = 'Controllers'
end
# Process controller files
@@ -30,70 +29,65 @@
# ApplicationController's file is 'application.rb' in Rails < 2.3
class_name += 'Controller' if class_name == 'Application'
begin
process_class class_name.constantize
rescue Exception
- STDERR.print "Warning: exception #{$!} raised while trying to load controller class #{f}"
+ STDERR.print "Warning: exception #{$ERROR_INFO} raised while trying to load controller class #{f}"
end
- end
+ end
end # generate
- def get_files(prefix ='')
- files = !@options.specify.empty? ? Dir.glob(@options.specify) : Dir.glob(prefix << "app/controllers/**/*_controller.rb")
- files += get_engine_files if @options.engine_controllers
+ def get_files(prefix = '')
+ files = !@options.specify.empty? ? Dir.glob(@options.specify) : Dir.glob(prefix << 'app/controllers/**/*_controller.rb')
+ files += engine_files if @options.engine_controllers
files -= Dir.glob(@options.exclude)
files
end
-
- def get_engine_files
- engines.collect { |engine| Dir.glob("#{engine.root.to_s}/app/controllers/**/*_controller.rb")}.flatten
+
+ def engine_files
+ engines.collect { |engine| Dir.glob("#{engine.root}/app/controllers/**/*_controller.rb") }.flatten
end
-
+
def extract_class_name(filename)
- controller_index = filename.split('/').index("controllers") + 1
- filename.split('/')[controller_index..-1].collect { |i| i.camelize }.join('::').chomp(".rb")
+ filename.match(/.*\/controllers\/(.*).rb$/)[1].camelize
end
-
-
private
+
# Load controller classes
def load_classes
- begin
- disable_stdout
- # ApplicationController must be loaded first
- require APP_CONTROLLER
- get_files.each {|c| require "./#{c}" }
- enable_stdout
- rescue LoadError
- enable_stdout
- print_error "controller classes"
- raise
- end
+ disable_stdout
+ # ApplicationController must be loaded first
+ require APP_CONTROLLER
+ get_files.each { |c| require "./#{c}" }
+ enable_stdout
+ rescue LoadError
+ enable_stdout
+ print_error 'controller classes'
+ raise
end # load_classes
# Proccess a controller class
def process_class(current_class)
-
STDERR.print "\tProcessing #{current_class}\n" if @options.verbose
if @options.brief
@graph.add_node ['controller-brief', current_class.name]
- elsif current_class.is_a? Class
+ elsif current_class.is_a? Class
# Collect controller's methods
- node_attribs = {:public => [],
- :protected => [],
- :private => []}
- current_class.public_instance_methods(false).sort.each { |m|
+ node_attribs = { public: [],
+ protected: [],
+ private: [] }
+ current_class.public_instance_methods(false).sort.each do |m|
node_attribs[:public] << m
- } unless @options.hide_public
- current_class.protected_instance_methods(false).sort.each { |m|
+ end unless @options.hide_public
+ current_class.protected_instance_methods(false).sort.each do |m|
node_attribs[:protected] << m
- } unless @options.hide_protected
- current_class.private_instance_methods(false).sort.each { |m|
- node_attribs[:private] << m
- } unless @options.hide_private
+ end unless @options.hide_protected
+ current_class.private_instance_methods(false).sort.each do |m|
+ node_attribs[:private] << m
+ end unless @options.hide_private
@graph.add_node ['controller', current_class.name, node_attribs]
elsif @options.modules && current_class.is_a?(Module)
@graph.add_node ['module', current_class.name]
end
@@ -102,9 +96,8 @@
@graph.add_edge ['is-a', current_class.superclass.name, current_class.name]
end
end # process_class
def transitive_subclasses_of(klass)
- klass.subclasses | klass.subclasses.map {|subklass| transitive_subclasses_of(subklass)}.flatten
+ klass.subclasses | klass.subclasses.map { |subklass| transitive_subclasses_of(subklass) }.flatten
end
-
end # class ControllersDiagram