railroad 0.3.1 → 0.3.2
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/ChangeLog +7 -0
- data/lib/railroad +39 -11
- data/rake.gemspec +12 -12
- metadata +3 -1
data/ChangeLog
CHANGED
@@ -1,6 +1,13 @@
|
|
1
|
+
Version 0.3.2 (apr 9 2007)
|
2
|
+
- Disable STDOUT when loading applications classes, avoiding
|
3
|
+
messing up the DOT output.
|
4
|
+
(Thanks to Sebastien Auvray, http://tnlessone.wordpress.com/)
|
5
|
+
|
6
|
+
|
1
7
|
Version 0.3.1 (apr 9 2007)
|
2
8
|
- Release again for fix an error in .gem file
|
3
9
|
|
10
|
+
|
4
11
|
Version 0.3.0 (apr 9 2007)
|
5
12
|
- Major code rewrite
|
6
13
|
(More OO style)
|
data/lib/railroad
CHANGED
@@ -16,15 +16,17 @@
|
|
16
16
|
|
17
17
|
APP_NAME = "railroad"
|
18
18
|
APP_HUMAN_NAME = "RailRoad"
|
19
|
-
APP_VERSION = [0,3,
|
19
|
+
APP_VERSION = [0,3,2]
|
20
20
|
COPYRIGHT = "Copyright (C) 2007 Javier Smaldone"
|
21
21
|
|
22
22
|
|
23
|
+
# Command line options parser
|
23
24
|
class OptionsParser
|
24
25
|
|
25
26
|
require 'optparse'
|
26
27
|
require 'ostruct'
|
27
28
|
|
29
|
+
# Parse arguments from command line
|
28
30
|
def self.parse(args)
|
29
31
|
|
30
32
|
options = OpenStruct.new
|
@@ -101,7 +103,7 @@ class OptionsParser
|
|
101
103
|
opts.separator "Commands (you must supply one of these):"
|
102
104
|
opts.on("-M", "--models", "Generate models diagram") do |c|
|
103
105
|
if options.command == 'controllers'
|
104
|
-
|
106
|
+
STDERR.print "Error: Can't generate models AND controllers diagram\n\n"
|
105
107
|
exit 1
|
106
108
|
else
|
107
109
|
options.command = 'models'
|
@@ -109,7 +111,7 @@ class OptionsParser
|
|
109
111
|
end
|
110
112
|
opts.on("-C", "--controllers", "Generate controllers diagram") do |c|
|
111
113
|
if options.command == 'models'
|
112
|
-
|
114
|
+
STDERR.print "Error: Can't generate models AND controllers diagram\n\n"
|
113
115
|
exit 1
|
114
116
|
else
|
115
117
|
options.command = 'controllers'
|
@@ -139,13 +141,14 @@ class OptionsParser
|
|
139
141
|
private
|
140
142
|
|
141
143
|
def self.option_error(msg, opts)
|
142
|
-
|
144
|
+
STDERR.print "Error: #{msg}\n\n #{opts}\n"
|
143
145
|
exit 1
|
144
146
|
end
|
145
147
|
|
146
148
|
end # class OptionsParser
|
147
149
|
|
148
150
|
|
151
|
+
# Root class for RailRoad diagrams
|
149
152
|
class AppDiagram
|
150
153
|
|
151
154
|
def initialize(options)
|
@@ -160,6 +163,18 @@ class AppDiagram
|
|
160
163
|
'"' + name + '"'
|
161
164
|
end
|
162
165
|
|
166
|
+
# Prevents Rails application from writing to STDOUT
|
167
|
+
def disable_stdout
|
168
|
+
@old_stdout = STDOUT.dup
|
169
|
+
STDOUT.reopen( PLATFORM =~ /mswin/ ? "NUL" : "/dev/null" )
|
170
|
+
end
|
171
|
+
|
172
|
+
# Restore STDOUT
|
173
|
+
def enable_stdout
|
174
|
+
STDOUT.reopen(@old_stdout)
|
175
|
+
end
|
176
|
+
|
177
|
+
|
163
178
|
# Print diagram label
|
164
179
|
def print_info(type)
|
165
180
|
print "\t_diagram_info [shape=\"plaintext\", label=\"Diagram: #{type}\\l" +
|
@@ -169,6 +184,7 @@ class AppDiagram
|
|
169
184
|
", fontsize=14]\n"
|
170
185
|
end
|
171
186
|
|
187
|
+
# Print error when loading application classes
|
172
188
|
def print_error(type)
|
173
189
|
STDERR.print "Error loading #{type}.\n (Are you running " +
|
174
190
|
"#{APP_NAME} on the aplication's root directory?)\n\n"
|
@@ -177,8 +193,11 @@ class AppDiagram
|
|
177
193
|
# Load Rails application's environment
|
178
194
|
def load_environment
|
179
195
|
begin
|
196
|
+
disable_stdout
|
180
197
|
require "config/environment"
|
198
|
+
enable_stdout
|
181
199
|
rescue LoadError
|
200
|
+
enable_stdout
|
182
201
|
print_error "app environment"
|
183
202
|
raise
|
184
203
|
end
|
@@ -187,6 +206,7 @@ class AppDiagram
|
|
187
206
|
end # class AppDiagram
|
188
207
|
|
189
208
|
|
209
|
+
# RailRoad models diagram
|
190
210
|
class ModelsDiagram < AppDiagram
|
191
211
|
|
192
212
|
# Generate models diagram
|
@@ -218,8 +238,11 @@ class ModelsDiagram < AppDiagram
|
|
218
238
|
# Load model classes
|
219
239
|
def load_classes
|
220
240
|
begin
|
241
|
+
disable_stdout
|
221
242
|
Dir.glob("app/models/**/*.rb") {|m| require m }
|
243
|
+
enable_stdout
|
222
244
|
rescue LoadError
|
245
|
+
enable_stdout
|
223
246
|
print_error "model classes"
|
224
247
|
raise
|
225
248
|
end
|
@@ -316,6 +339,7 @@ class ModelsDiagram < AppDiagram
|
|
316
339
|
end # class ModelsDiagram
|
317
340
|
|
318
341
|
|
342
|
+
# RailRoad controllers diagram
|
319
343
|
class ControllersDiagram < AppDiagram
|
320
344
|
|
321
345
|
# Generate controllers diagram
|
@@ -353,12 +377,15 @@ class ControllersDiagram < AppDiagram
|
|
353
377
|
# Load controller classes
|
354
378
|
def load_classes
|
355
379
|
begin
|
380
|
+
disable_stdout
|
356
381
|
# ApplicationController must be loaded first
|
357
382
|
require "app/controllers/application.rb"
|
358
383
|
Dir.glob("app/controllers/**/*_controller.rb") do |c|
|
359
384
|
require c
|
360
385
|
end
|
386
|
+
enable_stdout
|
361
387
|
rescue LoadError
|
388
|
+
enable_stdout
|
362
389
|
print_error "controller classes"
|
363
390
|
raise
|
364
391
|
end
|
@@ -366,6 +393,7 @@ class ControllersDiagram < AppDiagram
|
|
366
393
|
|
367
394
|
# Proccess controller class
|
368
395
|
def process_class(current_class)
|
396
|
+
|
369
397
|
# Print the node
|
370
398
|
if @options.brief
|
371
399
|
print "\t#{node(current_class.name)}\n"
|
@@ -411,23 +439,23 @@ if options.command == 'models'
|
|
411
439
|
elsif options.command == 'controllers'
|
412
440
|
diagram = ControllersDiagram.new options
|
413
441
|
else
|
414
|
-
|
415
|
-
|
442
|
+
STDERR.print "Error: You must supply a command\n" +
|
443
|
+
" (try #{APP_NAME} -h)\n\n"
|
416
444
|
exit 1
|
417
445
|
end
|
418
446
|
|
419
447
|
if options.output
|
420
|
-
old_stdout =
|
448
|
+
old_stdout = STDOUT.dup
|
421
449
|
begin
|
422
|
-
|
450
|
+
STDOUT.reopen(options.output)
|
423
451
|
rescue
|
424
|
-
|
452
|
+
STDERR.print "Error: Cannot write to #{options.output}\n\n"
|
425
453
|
exit 2
|
426
454
|
end
|
427
455
|
end
|
428
456
|
|
429
457
|
diagram.generate
|
430
458
|
|
431
|
-
if options.
|
432
|
-
|
459
|
+
if options.output
|
460
|
+
STDOUT.reopen(old_stdout)
|
433
461
|
end
|
data/rake.gemspec
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
SPEC = Gem::Specification.new do |s|
|
3
|
-
s.name
|
4
|
-
s.version
|
5
|
-
s.author
|
6
|
-
s.email
|
7
|
-
s.homepage
|
8
|
-
s.platform
|
9
|
-
s.summary
|
10
|
-
s.files
|
11
|
-
s.bindir
|
12
|
-
s.executables
|
3
|
+
s.name = "railroad"
|
4
|
+
s.version = "0.3.2"
|
5
|
+
s.author = "Javier Smaldone"
|
6
|
+
s.email = "javier@smaldone.com.ar"
|
7
|
+
s.homepage = "http://railroad.rubyforge.org"
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.summary = "A DOT diagram generator for Ruby on Rail applications"
|
10
|
+
s.files = ["lib/railroad", "ChangeLog", "COPYING", "rake.gemspec"]
|
11
|
+
s.bindir = "lib"
|
12
|
+
s.executables = ["railroad"]
|
13
13
|
s.default_executable = "railroad"
|
14
|
-
s.has_rdoc
|
15
|
-
s.extra_rdoc_files = ["README"]
|
14
|
+
s.has_rdoc = true
|
15
|
+
s.extra_rdoc_files = ["README", "lib/railroad"]
|
16
16
|
end
|
metadata
CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: railroad
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.3.
|
6
|
+
version: 0.3.2
|
7
7
|
date: 2007-04-09 00:00:00 -03:00
|
8
8
|
summary: A DOT diagram generator for Ruby on Rail applications
|
9
9
|
require_paths:
|
@@ -29,6 +29,7 @@ post_install_message:
|
|
29
29
|
authors:
|
30
30
|
- Javier Smaldone
|
31
31
|
files:
|
32
|
+
- lib/railroad
|
32
33
|
- ChangeLog
|
33
34
|
- COPYING
|
34
35
|
- rake.gemspec
|
@@ -39,6 +40,7 @@ rdoc_options: []
|
|
39
40
|
|
40
41
|
extra_rdoc_files:
|
41
42
|
- README
|
43
|
+
- lib/railroad
|
42
44
|
executables:
|
43
45
|
- railroad
|
44
46
|
extensions: []
|