railroady 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +12 -1
- data/VERSION.yml +1 -1
- data/lib/railroady/models_diagram.rb +14 -12
- data/lib/railroady/options_struct.rb +4 -0
- data/lib/railroady/version.rb +1 -1
- data/tasks/railroady.rake +35 -31
- metadata +15 -4
    
        data/README.rdoc
    CHANGED
    
    | @@ -9,10 +9,19 @@ I (Preston Lee) am not trying to hijack Peter Hoeg or Javier's project, but rath | |
| 9 9 | 
             
            = System Requirements
         | 
| 10 10 |  | 
| 11 11 | 
             
            You MUST have the the following utilities available at the command line.
         | 
| 12 | 
            -
              * `dot` and `neato`. | 
| 12 | 
            +
              * `dot` and `neato`.
         | 
| 13 13 |  | 
| 14 14 | 
             
              * `sed`, which should already be available on all sane UNIX systems.
         | 
| 15 15 |  | 
| 16 | 
            +
            = Mac users
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            MacPorts users can install in via `sudo port install graphviz`.
         | 
| 19 | 
            +
            Brew user can install via `brew install graphviz`.
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            = Ubuntu users
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            Ubuntu users can install in via `sudo apt-get install graphviz`.
         | 
| 24 | 
            +
             | 
| 16 25 | 
             
            = Usage
         | 
| 17 26 |  | 
| 18 27 | 
             
            The easiest (and recommend) usage is to include railroady as a development dependency with your Rails 3 Gemfile, like so...
         | 
| @@ -52,6 +61,8 @@ Common options: | |
| 52 61 | 
             
            Models diagram options:
         | 
| 53 62 | 
             
                -a, --all                        Include all models
         | 
| 54 63 | 
             
                                                   (not only ActiveRecord::Base derived)
         | 
| 64 | 
            +
                    --all-columns                Show all columns 
         | 
| 65 | 
            +
                                                   (not just content columns)
         | 
| 55 66 | 
             
                    --hide-magic                 Hide magic field names
         | 
| 56 67 | 
             
                    --hide-types                 Hide attributes type
         | 
| 57 68 | 
             
                -j, --join                       Concentrate edges
         | 
    
        data/VERSION.yml
    CHANGED
    
    
| @@ -54,9 +54,12 @@ class ModelsDiagram < AppDiagram | |
| 54 54 | 
             
                  else 
         | 
| 55 55 | 
             
                    node_type = 'model'
         | 
| 56 56 |  | 
| 57 | 
            -
                    # Collect model's content columns
         | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 57 | 
            +
                    # Collect model's content columns or all columns if all_columns flag is passed
         | 
| 58 | 
            +
                    if @options.all_columns
         | 
| 59 | 
            +
                      columns = current_class.columns
         | 
| 60 | 
            +
                    else
         | 
| 61 | 
            +
                      columns = current_class.content_columns
         | 
| 62 | 
            +
                    end
         | 
| 60 63 |  | 
| 61 64 | 
             
                    if @options.hide_magic 
         | 
| 62 65 | 
             
                      # From patch #13351
         | 
| @@ -67,17 +70,16 @@ class ModelsDiagram < AppDiagram | |
| 67 70 | 
             
                      "rgt", "quote", "template"
         | 
| 68 71 | 
             
                      ]
         | 
| 69 72 | 
             
                      magic_fields << current_class.table_name + "_count" if current_class.respond_to? 'table_name' 
         | 
| 70 | 
            -
                       | 
| 71 | 
            -
                    else
         | 
| 72 | 
            -
                      content_columns = current_class.content_columns
         | 
| 73 | 
            +
                      columns = current_class.content_columns.select {|c| ! magic_fields.include? c.name}
         | 
| 73 74 | 
             
                    end
         | 
| 74 | 
            -
             | 
| 75 | 
            -
                     | 
| 76 | 
            -
                       | 
| 77 | 
            -
                       | 
| 78 | 
            -
                      node_attribs <<  | 
| 75 | 
            +
             | 
| 76 | 
            +
                    columns.each do |a|
         | 
| 77 | 
            +
                      column = a.name
         | 
| 78 | 
            +
                      column += ' :' + a.type.to_s unless @options.hide_types
         | 
| 79 | 
            +
                      node_attribs << column
         | 
| 79 80 | 
             
                    end
         | 
| 80 81 | 
             
                  end
         | 
| 82 | 
            +
             | 
| 81 83 | 
             
                  @graph.add_node [node_type, current_class.name, node_attribs]
         | 
| 82 84 | 
             
                  generated = true
         | 
| 83 85 | 
             
                  # Process class associations
         | 
| @@ -122,7 +124,7 @@ class ModelsDiagram < AppDiagram | |
| 122 124 |  | 
| 123 125 | 
             
                # from patch #12384
         | 
| 124 126 | 
             
                # if assoc.class_name == assoc.name.to_s.singularize.camelize
         | 
| 125 | 
            -
                assoc_class_name = (assoc.class_name.respond_to? 'underscore') ? assoc.class_name.underscore. | 
| 127 | 
            +
                assoc_class_name = (assoc.class_name.respond_to? 'underscore') ? assoc.class_name.underscore.camelize : assoc.class_name
         | 
| 126 128 | 
             
                if assoc_class_name == assoc.name.to_s.singularize.camelize
         | 
| 127 129 | 
             
                  assoc_name = ''
         | 
| 128 130 | 
             
                else
         | 
| @@ -20,6 +20,7 @@ class OptionsStruct < OpenStruct | |
| 20 20 | 
             
                                 :join => false,
         | 
| 21 21 | 
             
                                 :label => false,
         | 
| 22 22 | 
             
                                 :modules => false,
         | 
| 23 | 
            +
                                 :all_columns => false,
         | 
| 23 24 | 
             
                                 :hide_magic => false,
         | 
| 24 25 | 
             
                                 :hide_types => false,
         | 
| 25 26 | 
             
                                 :hide_public => false,
         | 
| @@ -81,6 +82,9 @@ class OptionsStruct < OpenStruct | |
| 81 82 | 
             
                  opts.on("--show-belongs_to", "Show belongs_to associations") do |s|
         | 
| 82 83 | 
             
                    self.show_belongs_to = s
         | 
| 83 84 | 
             
                  end
         | 
| 85 | 
            +
                  opts.on("--all-columns", "Show all columns (not just content columns)") do |h|
         | 
| 86 | 
            +
                    self.all_columns = h
         | 
| 87 | 
            +
                  end
         | 
| 84 88 | 
             
                  opts.on("--hide-magic", "Hide magic field names") do |h|
         | 
| 85 89 | 
             
                    self.hide_magic = h
         | 
| 86 90 | 
             
                  end
         | 
    
        data/lib/railroady/version.rb
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            require 'yaml'
         | 
| 2 2 | 
             
            module RailRoady
         | 
| 3 3 | 
             
              module VERSION #:nodoc:
         | 
| 4 | 
            -
             | 
| 4 | 
            +
                f = File.join(File.dirname(__FILE__), '..', '..', 'VERSION.yml')
         | 
| 5 5 | 
             
                if File.exist?(f)
         | 
| 6 6 | 
             
                  config = YAML.load(File.read(f))
         | 
| 7 7 | 
             
                  MAJOR = config[:major]
         | 
    
        data/tasks/railroady.rake
    CHANGED
    
    | @@ -6,57 +6,61 @@ | |
| 6 6 | 
             
            # * The `sed` command-line utility, which should already be available on all sane UNIX systems.
         | 
| 7 7 | 
             
            #
         | 
| 8 8 | 
             
            # Author: Preston Lee, http://railroady.prestonlee.com 
         | 
| 9 | 
            -
             | 
| 9 | 
            +
             | 
| 10 10 | 
             
            # Returns an absolute path for the following file.
         | 
| 11 | 
            +
            def format
         | 
| 12 | 
            +
              @@DIAGRAM_FORMAT ||= 'SVG'
         | 
| 13 | 
            +
            end
         | 
| 14 | 
            +
             | 
| 11 15 | 
             
            def full_path(name = 'test.txt')
         | 
| 12 16 | 
             
              f = File.join(Rails.root.to_s.gsub(' ', '\ '), 'doc', name)
         | 
| 13 17 | 
             
              f.to_s
         | 
| 14 18 | 
             
            end
         | 
| 15 | 
            -
             | 
| 19 | 
            +
             | 
| 16 20 | 
             
            namespace :diagram do
         | 
| 17 | 
            -
             | 
| 18 | 
            -
              @ | 
| 19 | 
            -
              @ | 
| 20 | 
            -
              @ | 
| 21 | 
            -
              @ | 
| 22 | 
            -
             | 
| 21 | 
            +
             | 
| 22 | 
            +
              @MODELS_ALL = full_path("models_complete.#{format}").freeze
         | 
| 23 | 
            +
              @MODELS_BRIEF = full_path("models_brief.#{format}").freeze
         | 
| 24 | 
            +
              @CONTROLLERS_ALL = full_path("controllers_complete.#{format}").freeze
         | 
| 25 | 
            +
              @CONTROLLERS_BRIEF = full_path("controllers_brief.#{format}").freeze
         | 
| 26 | 
            +
             | 
| 23 27 | 
             
              namespace :models do
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                desc 'Generates an  | 
| 28 | 
            +
             | 
| 29 | 
            +
                desc 'Generates an class diagram for all models.'
         | 
| 26 30 | 
             
                task :complete do
         | 
| 27 | 
            -
                  f = @ | 
| 31 | 
            +
                  f = @MODELS_ALL
         | 
| 28 32 | 
             
                  puts "Generating #{f}"
         | 
| 29 | 
            -
                  sh "railroady -ilamM | dot - | 
| 33 | 
            +
                  sh "railroady -ilamM | dot -T#{format} > #{f}"
         | 
| 30 34 | 
             
                end
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                desc 'Generates an abbreviated  | 
| 35 | 
            +
             | 
| 36 | 
            +
                desc 'Generates an abbreviated class diagram for all models.'
         | 
| 33 37 | 
             
                task :brief do
         | 
| 34 | 
            -
                  f = @ | 
| 38 | 
            +
                  f = @MODELS_BRIEF
         | 
| 35 39 | 
             
                  puts "Generating #{f}"
         | 
| 36 | 
            -
                  sh "railroady -bilamM | dot - | 
| 40 | 
            +
                  sh "railroady -bilamM | dot -T#{format} > #{f}"
         | 
| 37 41 | 
             
                end
         | 
| 38 | 
            -
             | 
| 42 | 
            +
             | 
| 39 43 | 
             
              end
         | 
| 40 | 
            -
             | 
| 44 | 
            +
             | 
| 41 45 | 
             
              namespace :controllers do
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                desc 'Generates an  | 
| 46 | 
            +
             | 
| 47 | 
            +
                desc 'Generates an class diagram for all controllers.'
         | 
| 44 48 | 
             
                task :complete do
         | 
| 45 | 
            -
                  f = @ | 
| 49 | 
            +
                  f = @CONTROLLERS_ALL
         | 
| 46 50 | 
             
                  puts "Generating #{f}"
         | 
| 47 | 
            -
                  sh "railroady -ilC | neato - | 
| 51 | 
            +
                  sh "railroady -ilC | neato -T#{format} > #{f}"
         | 
| 48 52 | 
             
                end
         | 
| 49 | 
            -
             | 
| 50 | 
            -
                desc 'Generates an abbreviated  | 
| 53 | 
            +
             | 
| 54 | 
            +
                desc 'Generates an abbreviated class diagram for all controllers.'
         | 
| 51 55 | 
             
                task :brief do
         | 
| 52 | 
            -
                  f = @ | 
| 56 | 
            +
                  f = @CONTROLLERS_BRIEF
         | 
| 53 57 | 
             
                  puts "Generating #{f}"
         | 
| 54 | 
            -
                  sh "railroady -bilC | neato - | 
| 58 | 
            +
                  sh "railroady -bilC | neato -T#{format} > #{f}"
         | 
| 55 59 | 
             
                end
         | 
| 56 | 
            -
             | 
| 60 | 
            +
             | 
| 57 61 | 
             
              end
         | 
| 58 | 
            -
             | 
| 59 | 
            -
              desc 'Generates all  | 
| 62 | 
            +
             | 
| 63 | 
            +
              desc 'Generates all class diagrams.'
         | 
| 60 64 | 
             
              task :all => ['diagram:models:complete', 'diagram:models:brief', 'diagram:controllers:complete', 'diagram:controllers:brief']
         | 
| 61 | 
            -
             | 
| 62 | 
            -
            end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,8 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: railroady
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
               | 
| 5 | 
            -
               | 
| 4 | 
            +
              hash: 17
         | 
| 5 | 
            +
              prerelease: false
         | 
| 6 | 
            +
              segments: 
         | 
| 7 | 
            +
              - 1
         | 
| 8 | 
            +
              - 0
         | 
| 9 | 
            +
              - 3
         | 
| 10 | 
            +
              version: 1.0.3
         | 
| 6 11 | 
             
            platform: ruby
         | 
| 7 12 | 
             
            authors: 
         | 
| 8 13 | 
             
            - Preston Lee
         | 
| @@ -13,7 +18,7 @@ autorequire: | |
| 13 18 | 
             
            bindir: bin
         | 
| 14 19 | 
             
            cert_chain: []
         | 
| 15 20 |  | 
| 16 | 
            -
            date: 2011- | 
| 21 | 
            +
            date: 2011-12-28 00:00:00 +05:30
         | 
| 17 22 | 
             
            default_executable: railroady
         | 
| 18 23 | 
             
            dependencies: []
         | 
| 19 24 |  | 
| @@ -66,17 +71,23 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 66 71 | 
             
              requirements: 
         | 
| 67 72 | 
             
              - - ">="
         | 
| 68 73 | 
             
                - !ruby/object:Gem::Version 
         | 
| 74 | 
            +
                  hash: 3
         | 
| 75 | 
            +
                  segments: 
         | 
| 76 | 
            +
                  - 0
         | 
| 69 77 | 
             
                  version: "0"
         | 
| 70 78 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 71 79 | 
             
              none: false
         | 
| 72 80 | 
             
              requirements: 
         | 
| 73 81 | 
             
              - - ">="
         | 
| 74 82 | 
             
                - !ruby/object:Gem::Version 
         | 
| 83 | 
            +
                  hash: 3
         | 
| 84 | 
            +
                  segments: 
         | 
| 85 | 
            +
                  - 0
         | 
| 75 86 | 
             
                  version: "0"
         | 
| 76 87 | 
             
            requirements: []
         | 
| 77 88 |  | 
| 78 89 | 
             
            rubyforge_project: 
         | 
| 79 | 
            -
            rubygems_version: 1. | 
| 90 | 
            +
            rubygems_version: 1.3.7
         | 
| 80 91 | 
             
            signing_key: 
         | 
| 81 92 | 
             
            specification_version: 3
         | 
| 82 93 | 
             
            summary: Ruby on Rails 3 model and controller UML class diagram generator.
         |