This file is indexed.

/usr/lib/ruby/1.9.1/ramaze/contrib/app_graph.rb is in libramaze-ruby1.9.1 2010.06.18-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
require 'set'

# require 'ramaze/contrib/app_graph'
#
# graph = AppGraph.new
# graph.generate
# graph.show

class AppGraph
  def initialize
    @out = Set.new
  end

  def generate
    Ramaze::AppMap.to_hash.each do |location, app|
      connect(location => app.name)

      app.url_map.to_hash.each do |c_location, c_node|
        connect(app.name => c_node)
        connect(c_node.mapping => c_node)

        c_node.update_template_mappings
        c_node.view_templates.each do |wish, mapping|
          mapping.each do |action_name, template|
            action_path = File.join(c_node.mapping, action_name)
            connect(c_node => action_path, action_path => template)
          end
        end

        c_node.update_method_arities
        c_node.method_arities.each do |method, arity|
          action_path = File.join(c_node.mapping, method.to_s)
          connect(action_path => "#{c_node}##{method}[#{arity}]", c_node => action_path)
        end
      end
    end
  end

  def connect(hash)
    hash.each do |from, to|
      @out << ("  %p -> %p;" % [from.to_s, to.to_s])
    end
  end

  def write_dot
    File.open('graph.dot', 'w+') do |dot|
      dot.puts 'digraph appmap {'
      dot.puts(*@out)
      dot.puts '}'
    end
  end

  def show
    write_dot
    options = {
      'rankdir' => 'LR',
      'splines' => 'true',
      'overlap' => 'false',
    }
    args = options.map{|k,v| "-G#{k}=#{v}" }
    system("dot -O -Tpng #{args.join(' ')} graph.dot")
    system('feh graph.dot.png')
  end
end