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.
|