class AppDiagram
Root class for RailRoad diagrams
Public Class Methods
new(options)
click to toggle source
# File lib/railroad/app_diagram.rb, line 12 def initialize(options) @options = options @graph = DiagramGraph.new @graph.show_label = @options.label STDERR.print "Loading application environment\n" if @options.verbose load_environment STDERR.print "Loading application classes\n" if @options.verbose load_classes end
Public Instance Methods
print()
click to toggle source
Print diagram
# File lib/railroad/app_diagram.rb, line 25 def print if @options.output old_stdout = STDOUT.dup begin STDOUT.reopen(@options.output) rescue STDERR.print "Error: Cannot write diagram to #{@options.output}\n\n" exit 2 end end if @options.xmi STDERR.print "Generating XMI diagram\n" if @options.verbose STDOUT.print @graph.to_xmi else STDERR.print "Generating DOT graph\n" if @options.verbose STDOUT.print @graph.to_dot end if @options.output STDOUT.reopen(old_stdout) end end
Private Instance Methods
disable_stdout()
click to toggle source
Prevents Rails application from writing to STDOUT
# File lib/railroad/app_diagram.rb, line 52 def disable_stdout @old_stdout = STDOUT.dup STDOUT.reopen(PLATFORM =~ /mswin/ ? "NUL" : "/dev/null") end
enable_stdout()
click to toggle source
Restore STDOUT
# File lib/railroad/app_diagram.rb, line 58 def enable_stdout STDOUT.reopen(@old_stdout) end
extract_class_name(filename)
click to toggle source
Extract class name from filename
# File lib/railroad/app_diagram.rb, line 83 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 end
load_environment()
click to toggle source
Load Rails application's environment
# File lib/railroad/app_diagram.rb, line 70 def load_environment begin disable_stdout require "config/environment" enable_stdout rescue LoadError enable_stdout print_error "application environment" raise end end
print_error(type)
click to toggle source
Print error when loading Rails application
# File lib/railroad/app_diagram.rb, line 64 def print_error(type) STDERR.print "Error loading #{type}.\n (Are you running " + "#{APP_NAME} on the aplication's root directory?)\n\n" end