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

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