class AppDiagram

Root class for PrailRoady diagrams

Public Class Methods

new(options = OptionsStruct.new) click to toggle source
# File lib/prailroady/app_diagram.rb, line 11
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/prailroady/app_diagram.rb, line 46
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/prailroady/app_diagram.rb, line 41
def process
  load_environment
end

Private Instance Methods

disable_stdout() click to toggle source

Prevents Rails application from writing to STDOUT

# File lib/prailroady/app_diagram.rb, line 79
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/prailroady/app_diagram.rb, line 86
def enable_stdout
  STDOUT.reopen(@old_stdout)
end
extract_class_name(filename) click to toggle source

Extract class name from filename

# File lib/prailroady/app_diagram.rb, line 97
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/prailroady/app_diagram.rb, line 63
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