class AppDiagram
Root class for RailRoady
diagrams
Public Class Methods
new(options = OptionsStruct.new)
click to toggle source
# File lib/railroady/app_diagram.rb, line 5 def initialize(options = OptionsStruct.new) @options = options @graph = DiagramGraph.new @graph.show_label = @options.label @graph.alphabetize = @options.alphabetize end
Public Instance Methods
engines()
click to toggle source
get all engines
# File lib/railroady/app_diagram.rb, line 40 def engines engines = [] if defined?(Rails) engines = if Rails::Application::Railties.respond_to?(:engines) Rails::Application::Railties.engines else # rails 4 way of getting engines Rails::Engine.subclasses.map(&:instance) end end engines end
print()
click to toggle source
Print diagram
# File lib/railroady/app_diagram.rb, line 13 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 $stdout.reopen(old_stdout) if @options.output end
process()
click to toggle source
# File lib/railroady/app_diagram.rb, line 35 def process load_environment end
Private Instance Methods
disable_stdout()
click to toggle source
Prevents Rails application from writing to STDOUT
# File lib/railroady/app_diagram.rb, line 73 def disable_stdout @old_stdout = $stdout.dup # via Tomas Matousek, http://www.ruby-forum.com/topic/205887 $stdout.reopen(::RUBY_PLATFORM =~ /djgpp|(cyg|ms|bcc)win|mingw/ ? 'NUL' : '/dev/null') end
enable_stdout()
click to toggle source
Restore STDOUT
# File lib/railroady/app_diagram.rb, line 80 def enable_stdout $stdout.reopen(@old_stdout) end
extract_class_name(filename)
click to toggle source
Extract class name from filename
# File lib/railroady/app_diagram.rb, line 91 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 filename.split('/')[2..-1].collect(&:camelize).join('::').chomp('.rb') end
load_environment()
click to toggle source
Load Rails application's environment
# File lib/railroady/app_diagram.rb, line 57 def load_environment $stderr.print "Loading application environment\n" if @options.verbose begin disable_stdout l = File.join(Dir.pwd.to_s, @options.config_file) require l enable_stdout rescue LoadError enable_stdout print_error 'application environment' raise end $stderr.print "Loading application classes as we go\n" if @options.verbose end
print_error(type)
click to toggle source
Print error when loading Rails application
# File lib/railroady/app_diagram.rb, line 85 def print_error(type) $stderr.print "Error loading #{type}.\n (Are you running " \ "#{@options.app_name} on the application's root directory?)\n\n" end