rails 1.0.0 → 7.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rails might be problematic. Click here for more details.

Files changed (156) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +103 -0
  3. metadata +228 -294
  4. data/CHANGELOG +0 -865
  5. data/MIT-LICENSE +0 -20
  6. data/README +0 -153
  7. data/Rakefile +0 -422
  8. data/bin/about +0 -3
  9. data/bin/breakpointer +0 -3
  10. data/bin/console +0 -3
  11. data/bin/destroy +0 -3
  12. data/bin/generate +0 -3
  13. data/bin/performance/benchmarker +0 -3
  14. data/bin/performance/profiler +0 -3
  15. data/bin/plugin +0 -3
  16. data/bin/process/reaper +0 -3
  17. data/bin/process/spawner +0 -3
  18. data/bin/process/spinner +0 -3
  19. data/bin/rails +0 -21
  20. data/bin/runner +0 -3
  21. data/bin/server +0 -3
  22. data/builtin/controllers/rails_info_controller.rb +0 -11
  23. data/configs/apache.conf +0 -40
  24. data/configs/database.yml +0 -85
  25. data/configs/empty.log +0 -0
  26. data/configs/lighttpd.conf +0 -40
  27. data/configs/routes.rb +0 -19
  28. data/dispatches/dispatch.fcgi +0 -24
  29. data/dispatches/dispatch.rb +0 -10
  30. data/dispatches/gateway.cgi +0 -97
  31. data/doc/README_FOR_APP +0 -2
  32. data/environments/boot.rb +0 -19
  33. data/environments/development.rb +0 -19
  34. data/environments/environment.rb +0 -53
  35. data/environments/production.rb +0 -19
  36. data/environments/test.rb +0 -19
  37. data/fresh_rakefile +0 -10
  38. data/helpers/application.rb +0 -4
  39. data/helpers/application_helper.rb +0 -3
  40. data/helpers/test_helper.rb +0 -28
  41. data/html/404.html +0 -8
  42. data/html/500.html +0 -8
  43. data/html/favicon.ico +0 -0
  44. data/html/images/rails.png +0 -0
  45. data/html/index.html +0 -277
  46. data/html/javascripts/controls.js +0 -750
  47. data/html/javascripts/dragdrop.js +0 -584
  48. data/html/javascripts/effects.js +0 -854
  49. data/html/javascripts/prototype.js +0 -1785
  50. data/html/robots.txt +0 -1
  51. data/lib/binding_of_caller.rb +0 -85
  52. data/lib/breakpoint.rb +0 -523
  53. data/lib/breakpoint_client.rb +0 -196
  54. data/lib/code_statistics.rb +0 -107
  55. data/lib/commands/about.rb +0 -2
  56. data/lib/commands/breakpointer.rb +0 -1
  57. data/lib/commands/console.rb +0 -23
  58. data/lib/commands/destroy.rb +0 -6
  59. data/lib/commands/generate.rb +0 -6
  60. data/lib/commands/ncgi/listener +0 -86
  61. data/lib/commands/ncgi/tracker +0 -69
  62. data/lib/commands/performance/benchmarker.rb +0 -24
  63. data/lib/commands/performance/profiler.rb +0 -34
  64. data/lib/commands/plugin.rb +0 -823
  65. data/lib/commands/process/reaper.rb +0 -130
  66. data/lib/commands/process/spawner.rb +0 -52
  67. data/lib/commands/process/spinner.rb +0 -57
  68. data/lib/commands/runner.rb +0 -27
  69. data/lib/commands/server.rb +0 -28
  70. data/lib/commands/servers/lighttpd.rb +0 -60
  71. data/lib/commands/servers/webrick.rb +0 -59
  72. data/lib/commands/update.rb +0 -4
  73. data/lib/commands.rb +0 -17
  74. data/lib/console_sandbox.rb +0 -6
  75. data/lib/dispatcher.rb +0 -99
  76. data/lib/fcgi_handler.rb +0 -189
  77. data/lib/initializer.rb +0 -553
  78. data/lib/rails_generator/base.rb +0 -203
  79. data/lib/rails_generator/commands.rb +0 -509
  80. data/lib/rails_generator/generators/applications/app/USAGE +0 -16
  81. data/lib/rails_generator/generators/applications/app/app_generator.rb +0 -140
  82. data/lib/rails_generator/generators/components/controller/USAGE +0 -30
  83. data/lib/rails_generator/generators/components/controller/controller_generator.rb +0 -38
  84. data/lib/rails_generator/generators/components/controller/templates/controller.rb +0 -10
  85. data/lib/rails_generator/generators/components/controller/templates/functional_test.rb +0 -18
  86. data/lib/rails_generator/generators/components/controller/templates/helper.rb +0 -2
  87. data/lib/rails_generator/generators/components/controller/templates/view.rhtml +0 -2
  88. data/lib/rails_generator/generators/components/mailer/USAGE +0 -18
  89. data/lib/rails_generator/generators/components/mailer/mailer_generator.rb +0 -32
  90. data/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml +0 -3
  91. data/lib/rails_generator/generators/components/mailer/templates/mailer.rb +0 -13
  92. data/lib/rails_generator/generators/components/mailer/templates/unit_test.rb +0 -37
  93. data/lib/rails_generator/generators/components/mailer/templates/view.rhtml +0 -3
  94. data/lib/rails_generator/generators/components/migration/USAGE +0 -14
  95. data/lib/rails_generator/generators/components/migration/migration_generator.rb +0 -7
  96. data/lib/rails_generator/generators/components/migration/templates/migration.rb +0 -7
  97. data/lib/rails_generator/generators/components/model/USAGE +0 -17
  98. data/lib/rails_generator/generators/components/model/model_generator.rb +0 -18
  99. data/lib/rails_generator/generators/components/model/templates/fixtures.yml +0 -5
  100. data/lib/rails_generator/generators/components/model/templates/model.rb +0 -2
  101. data/lib/rails_generator/generators/components/model/templates/unit_test.rb +0 -10
  102. data/lib/rails_generator/generators/components/plugin/USAGE +0 -33
  103. data/lib/rails_generator/generators/components/plugin/plugin_generator.rb +0 -33
  104. data/lib/rails_generator/generators/components/plugin/templates/README +0 -4
  105. data/lib/rails_generator/generators/components/plugin/templates/Rakefile +0 -22
  106. data/lib/rails_generator/generators/components/plugin/templates/USAGE +0 -8
  107. data/lib/rails_generator/generators/components/plugin/templates/generator.rb +0 -8
  108. data/lib/rails_generator/generators/components/plugin/templates/init.rb +0 -1
  109. data/lib/rails_generator/generators/components/plugin/templates/plugin.rb +0 -1
  110. data/lib/rails_generator/generators/components/plugin/templates/tasks.rake +0 -4
  111. data/lib/rails_generator/generators/components/plugin/templates/unit_test.rb +0 -8
  112. data/lib/rails_generator/generators/components/scaffold/USAGE +0 -32
  113. data/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +0 -184
  114. data/lib/rails_generator/generators/components/scaffold/templates/controller.rb +0 -54
  115. data/lib/rails_generator/generators/components/scaffold/templates/form.rhtml +0 -3
  116. data/lib/rails_generator/generators/components/scaffold/templates/form_scaffolding.rhtml +0 -1
  117. data/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb +0 -98
  118. data/lib/rails_generator/generators/components/scaffold/templates/helper.rb +0 -2
  119. data/lib/rails_generator/generators/components/scaffold/templates/layout.rhtml +0 -13
  120. data/lib/rails_generator/generators/components/scaffold/templates/style.css +0 -74
  121. data/lib/rails_generator/generators/components/scaffold/templates/view_edit.rhtml +0 -9
  122. data/lib/rails_generator/generators/components/scaffold/templates/view_list.rhtml +0 -27
  123. data/lib/rails_generator/generators/components/scaffold/templates/view_new.rhtml +0 -8
  124. data/lib/rails_generator/generators/components/scaffold/templates/view_show.rhtml +0 -8
  125. data/lib/rails_generator/generators/components/session_migration/USAGE +0 -15
  126. data/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb +0 -12
  127. data/lib/rails_generator/generators/components/session_migration/templates/migration.rb +0 -15
  128. data/lib/rails_generator/generators/components/web_service/USAGE +0 -28
  129. data/lib/rails_generator/generators/components/web_service/templates/api_definition.rb +0 -5
  130. data/lib/rails_generator/generators/components/web_service/templates/controller.rb +0 -8
  131. data/lib/rails_generator/generators/components/web_service/templates/functional_test.rb +0 -19
  132. data/lib/rails_generator/generators/components/web_service/web_service_generator.rb +0 -29
  133. data/lib/rails_generator/lookup.rb +0 -210
  134. data/lib/rails_generator/manifest.rb +0 -53
  135. data/lib/rails_generator/options.rb +0 -140
  136. data/lib/rails_generator/scripts/destroy.rb +0 -7
  137. data/lib/rails_generator/scripts/generate.rb +0 -7
  138. data/lib/rails_generator/scripts/update.rb +0 -12
  139. data/lib/rails_generator/scripts.rb +0 -83
  140. data/lib/rails_generator/simple_logger.rb +0 -46
  141. data/lib/rails_generator/spec.rb +0 -44
  142. data/lib/rails_generator.rb +0 -43
  143. data/lib/rails_info.rb +0 -104
  144. data/lib/rails_version.rb +0 -9
  145. data/lib/railties_path.rb +0 -1
  146. data/lib/rubyprof_ext.rb +0 -35
  147. data/lib/tasks/databases.rake +0 -158
  148. data/lib/tasks/documentation.rake +0 -76
  149. data/lib/tasks/framework.rake +0 -71
  150. data/lib/tasks/javascripts.rake +0 -6
  151. data/lib/tasks/misc.rake +0 -19
  152. data/lib/tasks/rails.rb +0 -8
  153. data/lib/tasks/statistics.rake +0 -16
  154. data/lib/tasks/testing.rake +0 -50
  155. data/lib/test_help.rb +0 -17
  156. data/lib/webrick_server.rb +0 -170
@@ -1,196 +0,0 @@
1
- require 'breakpoint'
2
- require 'optparse'
3
- require 'timeout'
4
-
5
- Options = {
6
- :ClientURI => nil,
7
- :ServerURI => "druby://localhost:42531",
8
- :RetryDelay => 2,
9
- :Permanent => true,
10
- :Verbose => false
11
- }
12
-
13
- ARGV.options do |opts|
14
- script_name = File.basename($0)
15
- opts.banner = [
16
- "Usage: ruby #{script_name} [Options] [server uri]",
17
- "",
18
- "This tool lets you connect to a breakpoint service ",
19
- "which was started via Breakpoint.activate_drb.",
20
- "",
21
- "The server uri defaults to druby://localhost:42531"
22
- ].join("\n")
23
-
24
- opts.separator ""
25
-
26
- opts.on("-c", "--client-uri=uri",
27
- "Run the client on the specified uri.",
28
- "This can be used to specify the port",
29
- "that the client uses to allow for back",
30
- "connections from the server.",
31
- "Default: Find a good URI automatically.",
32
- "Example: -c druby://localhost:12345"
33
- ) { |Options[:ClientURI]| }
34
-
35
- opts.on("-s", "--server-uri=uri",
36
- "Connect to the server specified at the",
37
- "specified uri.",
38
- "Default: druby://localhost:42531"
39
- ) { |Options[:ServerURI]| }
40
-
41
- opts.on("-R", "--retry-delay=delay", Integer,
42
- "Automatically try to reconnect to the",
43
- "server after delay seconds when the",
44
- "connection failed or timed out.",
45
- "A value of 0 disables automatical",
46
- "reconnecting completely.",
47
- "Default: 10"
48
- ) { |Options[:RetryDelay]| }
49
-
50
- opts.on("-P", "--[no-]permanent",
51
- "Run the breakpoint client in permanent mode.",
52
- "This means that the client will keep continue",
53
- "running even after the server has closed the",
54
- "connection. Useful for example in Rails."
55
- ) { |Options[:Permanent]| }
56
-
57
- opts.on("-V", "--[no-]verbose",
58
- "Run the breakpoint client in verbose mode.",
59
- "Will produce more messages, for example between",
60
- "individual breakpoints. This might help in seeing",
61
- "that the breakpoint client is still alive, but adds",
62
- "quite a bit of clutter."
63
- ) { |Options[:Verbose]| }
64
-
65
- opts.separator ""
66
-
67
- opts.on("-h", "--help",
68
- "Show this help message."
69
- ) { puts opts; exit }
70
- opts.on("-v", "--version",
71
- "Display the version information."
72
- ) do
73
- id = %q$Id: breakpoint_client.rb 91 2005-02-04 22:34:08Z flgr $
74
- puts id.sub("Id: ", "")
75
- puts "(Breakpoint::Version = #{Breakpoint::Version})"
76
- exit
77
- end
78
-
79
- opts.parse!
80
- end
81
-
82
- Options[:ServerURI] = ARGV[0] if ARGV[0]
83
-
84
- module Handlers #:nodoc:
85
- extend self
86
-
87
- def breakpoint_handler(workspace, message)
88
- puts message
89
- IRB.start(nil, nil, workspace)
90
-
91
- puts ""
92
- if Options[:Verbose] then
93
- puts "Resumed execution. Waiting for next breakpoint...", ""
94
- end
95
- end
96
-
97
- def eval_handler(code)
98
- result = eval(code, TOPLEVEL_BINDING)
99
- if result then
100
- DRbObject.new(result)
101
- else
102
- result
103
- end
104
- end
105
-
106
- def collision_handler()
107
- msg = [
108
- " *** Breakpoint service collision ***",
109
- " Another Breakpoint service tried to use the",
110
- " port already occupied by this one. It will",
111
- " keep waiting until this Breakpoint service",
112
- " is shut down.",
113
- " ",
114
- " If you are using the Breakpoint library for",
115
- " debugging a Rails or other CGI application",
116
- " this likely means that this Breakpoint",
117
- " session belongs to an earlier, outdated",
118
- " request and should be shut down via 'exit'."
119
- ].join("\n")
120
-
121
- if RUBY_PLATFORM["win"] then
122
- # This sucks. Sorry, I'm not doing this because
123
- # I like funky message boxes -- I need to do this
124
- # because on Windows I have no way of displaying
125
- # my notification via puts() when gets() is still
126
- # being performed on STDIN. I have not found a
127
- # better solution.
128
- begin
129
- require 'tk'
130
- root = TkRoot.new { withdraw }
131
- Tk.messageBox('message' => msg, 'type' => 'ok')
132
- root.destroy
133
- rescue Exception
134
- puts "", msg, ""
135
- end
136
- else
137
- puts "", msg, ""
138
- end
139
- end
140
- end
141
-
142
- # Used for checking whether we are currently in the reconnecting loop.
143
- reconnecting = false
144
-
145
- loop do
146
- DRb.start_service(Options[:ClientURI])
147
-
148
- begin
149
- service = DRbObject.new(nil, Options[:ServerURI])
150
-
151
- begin
152
- ehandler = Handlers.method(:eval_handler)
153
- chandler = Handlers.method(:collision_handler)
154
- handler = Handlers.method(:breakpoint_handler)
155
- service.eval_handler = ehandler
156
- service.collision_handler = chandler
157
- service.handler = handler
158
-
159
- reconnecting = false
160
- if Options[:Verbose] then
161
- puts "Connection established. Waiting for breakpoint...", ""
162
- end
163
-
164
- loop do
165
- begin
166
- service.ping
167
- rescue DRb::DRbConnError => error
168
- puts "Server exited. Closing connection...", ""
169
- exit! unless Options[:Permanent]
170
- break
171
- end
172
-
173
- sleep(0.5)
174
- end
175
- ensure
176
- service.eval_handler = nil
177
- service.collision_handler = nil
178
- service.handler = nil
179
- end
180
- rescue Exception => error
181
- if Options[:RetryDelay] > 0 then
182
- if not reconnecting then
183
- reconnecting = true
184
- puts "No connection to breakpoint service at #{Options[:ServerURI]} " +
185
- "(#{error.class})"
186
- puts error.backtrace if $DEBUG
187
- puts "Tries to connect will be made every #{Options[:RetryDelay]} seconds..."
188
- end
189
-
190
- sleep Options[:RetryDelay]
191
- retry
192
- else
193
- raise
194
- end
195
- end
196
- end
@@ -1,107 +0,0 @@
1
- class CodeStatistics #:nodoc:
2
-
3
- TEST_TYPES = ['Units', 'Functionals', 'Unit tests', 'Functional tests']
4
-
5
- def initialize(*pairs)
6
- @pairs = pairs
7
- @statistics = calculate_statistics
8
- @total = calculate_total if pairs.length > 1
9
- end
10
-
11
- def to_s
12
- print_header
13
- @pairs.each { |pair| print_line(pair.first, @statistics[pair.first]) }
14
- print_splitter
15
-
16
- if @total
17
- print_line("Total", @total)
18
- print_splitter
19
- end
20
-
21
- print_code_test_stats
22
- end
23
-
24
- private
25
- def calculate_statistics
26
- @pairs.inject({}) { |stats, pair| stats[pair.first] = calculate_directory_statistics(pair.last); stats }
27
- end
28
-
29
- def calculate_directory_statistics(directory, pattern = /.*\.rb$/)
30
- stats = { "lines" => 0, "codelines" => 0, "classes" => 0, "methods" => 0 }
31
-
32
- Dir.foreach(directory) do |file_name|
33
- if File.stat(directory + "/" + file_name).directory? and (/^\./ !~ file_name)
34
- newstats = calculate_directory_statistics(directory + "/" + file_name, pattern)
35
- stats.each { |k, v| stats[k] += newstats[k] }
36
- end
37
-
38
- next unless file_name =~ pattern
39
-
40
- f = File.open(directory + "/" + file_name)
41
-
42
- while line = f.gets
43
- stats["lines"] += 1
44
- stats["classes"] += 1 if line =~ /class [A-Z]/
45
- stats["methods"] += 1 if line =~ /def [a-z]/
46
- stats["codelines"] += 1 unless line =~ /^\s*$/ || line =~ /^\s*#/
47
- end
48
- end
49
-
50
- stats
51
- end
52
-
53
- def calculate_total
54
- total = { "lines" => 0, "codelines" => 0, "classes" => 0, "methods" => 0 }
55
- @statistics.each_value { |pair| pair.each { |k, v| total[k] += v } }
56
- total
57
- end
58
-
59
- def calculate_code
60
- code_loc = 0
61
- @statistics.each { |k, v| code_loc += v['codelines'] unless TEST_TYPES.include? k }
62
- code_loc
63
- end
64
-
65
- def calculate_tests
66
- test_loc = 0
67
- @statistics.each { |k, v| test_loc += v['codelines'] if TEST_TYPES.include? k }
68
- test_loc
69
- end
70
-
71
- def print_header
72
- print_splitter
73
- puts "| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |"
74
- print_splitter
75
- end
76
-
77
- def print_splitter
78
- puts "+----------------------+-------+-------+---------+---------+-----+-------+"
79
- end
80
-
81
- def print_line(name, statistics)
82
- m_over_c = (statistics["methods"] / statistics["classes"]) rescue m_over_c = 0
83
- loc_over_m = (statistics["codelines"] / statistics["methods"]) - 2 rescue loc_over_m = 0
84
-
85
- start = if TEST_TYPES.include? name
86
- "| #{name.ljust(18)} "
87
- else
88
- "| #{name.ljust(20)} "
89
- end
90
-
91
- puts start +
92
- "| #{statistics["lines"].to_s.rjust(5)} " +
93
- "| #{statistics["codelines"].to_s.rjust(5)} " +
94
- "| #{statistics["classes"].to_s.rjust(7)} " +
95
- "| #{statistics["methods"].to_s.rjust(7)} " +
96
- "| #{m_over_c.to_s.rjust(3)} " +
97
- "| #{loc_over_m.to_s.rjust(5)} |"
98
- end
99
-
100
- def print_code_test_stats
101
- code = calculate_code
102
- tests = calculate_tests
103
-
104
- puts " Code LOC: #{code} Test LOC: #{tests} Code to Test Ratio: 1:#{sprintf("%.1f", tests.to_f/code)}"
105
- puts ""
106
- end
107
- end
@@ -1,2 +0,0 @@
1
- require 'environment'
2
- puts Rails::Info
@@ -1 +0,0 @@
1
- require 'breakpoint_client'
@@ -1,23 +0,0 @@
1
- irb = RUBY_PLATFORM =~ /mswin32/ ? 'irb.bat' : 'irb'
2
-
3
- require 'optparse'
4
- options = { :sandbox => false, :irb => irb }
5
- OptionParser.new do |opt|
6
- opt.banner = "Usage: console [environment] [options]"
7
- opt.on('-s', '--sandbox', 'Rollback database modifications on exit.') { |options[:sandbox]| }
8
- opt.on("--irb=[#{irb}]", 'Invoke a different irb.') { |options[:irb]| }
9
- opt.parse!(ARGV)
10
- end
11
-
12
- libs = " -r irb/completion"
13
- libs << " -r #{RAILS_ROOT}/config/environment"
14
- libs << " -r console_sandbox" if options[:sandbox]
15
-
16
- ENV['RAILS_ENV'] = ARGV.first || 'development'
17
- if options[:sandbox]
18
- puts "Loading #{ENV['RAILS_ENV']} environment in sandbox."
19
- puts "Any modifications you make will be rolled back on exit."
20
- else
21
- puts "Loading #{ENV['RAILS_ENV']} environment."
22
- end
23
- exec "#{options[:irb]} #{libs} --prompt-mode simple"
@@ -1,6 +0,0 @@
1
- require "#{RAILS_ROOT}/config/environment"
2
- require 'rails_generator'
3
- require 'rails_generator/scripts/destroy'
4
-
5
- ARGV.shift if ['--help', '-h'].include?(ARGV[0])
6
- Rails::Generator::Scripts::Destroy.new.run(ARGV)
@@ -1,6 +0,0 @@
1
- require "#{RAILS_ROOT}/config/environment"
2
- require 'rails_generator'
3
- require 'rails_generator/scripts/generate'
4
-
5
- ARGV.shift if ['--help', '-h'].include?(ARGV[0])
6
- Rails::Generator::Scripts::Generate.new.run(ARGV)
@@ -1,86 +0,0 @@
1
- #!/usr/local/bin/ruby
2
-
3
- require 'stringio'
4
- require 'fileutils'
5
- require 'fcgi_handler'
6
-
7
- def message(s)
8
- $stderr.puts "listener: #{s}" if ENV && ENV["DEBUG_GATEWAY"]
9
- end
10
-
11
- class RemoteCGI < CGI
12
- attr_accessor :stdinput, :stdoutput, :env_table
13
- def initialize(env_table, input = nil, output = nil)
14
- self.env_table = env_table
15
- self.stdinput = input || StringIO.new
16
- self.stdoutput = output || StringIO.new
17
- super()
18
- end
19
-
20
- def out(stream) # Ignore the requested output stream
21
- super(stdoutput)
22
- end
23
- end
24
-
25
- class Listener
26
- include DRbUndumped
27
-
28
- def initialize(timeout, socket_path)
29
- @socket = File.expand_path(socket_path)
30
- @mutex = Mutex.new
31
- @active = false
32
- @timeout = timeout
33
-
34
- @handler = RailsFCGIHandler.new
35
- @handler.extend DRbUndumped
36
-
37
- message 'opening socket'
38
- DRb.start_service("drbunix:#{@socket}", self)
39
-
40
- message 'entering process loop'
41
- @handler.process! self
42
- end
43
-
44
- def each_cgi(&cgi_block)
45
- @cgi_block = cgi_block
46
- message 'entering idle loop'
47
- loop do
48
- sleep @timeout rescue nil
49
- die! unless @active
50
- @active = false
51
- end
52
- end
53
-
54
- def process(env, input)
55
- message 'received request'
56
- @mutex.synchronize do
57
- @active = true
58
-
59
- message 'creating input stream'
60
- input_stream = StringIO.new(input)
61
- message 'building CGI instance'
62
- cgi = RemoteCGI.new(eval(env), input_stream)
63
-
64
- message 'yielding to fcgi handler'
65
- @cgi_block.call cgi
66
- message 'yield finished -- sending output'
67
-
68
- cgi.stdoutput.seek(0)
69
- output = cgi.stdoutput.read
70
-
71
- return output
72
- end
73
- end
74
-
75
- def die!
76
- message 'shutting down'
77
- DRb.stop_service
78
- FileUtils.rm_f @socket
79
- Kernel.exit 0
80
- end
81
- end
82
-
83
- socket_path = ARGV.shift
84
- timeout = (ARGV.shift || 90).to_i
85
-
86
- Listener.new(timeout, socket_path)
@@ -1,69 +0,0 @@
1
- #!/usr/local/bin/ruby
2
-
3
- require 'drb'
4
- require 'thread'
5
-
6
- def message(s)
7
- $stderr.puts "tracker: #{s}" if ENV && ENV["DEBUG_GATEWAY"]
8
- end
9
-
10
- class Tracker
11
- include DRbUndumped
12
-
13
- def initialize(instances, socket_path)
14
- @instances = instances
15
- @socket = File.expand_path(socket_path)
16
- @active = false
17
-
18
- @listeners = []
19
- @instances.times { @listeners << Mutex.new }
20
-
21
- message "using #{@listeners.length} listeners"
22
- message "opening socket at #{@socket}"
23
-
24
- @service = DRb.start_service("drbunix://#{@socket}", self)
25
- end
26
-
27
- def with_listener
28
- message "listener requested"
29
-
30
- mutex = has_lock = index = nil
31
- 3.times do
32
- @listeners.each_with_index do |mutex, index|
33
- has_lock = mutex.try_lock
34
- break if has_lock
35
- end
36
- break if has_lock
37
- sleep 0.05
38
- end
39
-
40
- if has_lock
41
- message "obtained listener #{index}"
42
- @active = true
43
- begin yield index
44
- ensure
45
- mutex.unlock
46
- message "released listener #{index}"
47
- end
48
- else
49
- message "dropping request because no listeners are available!"
50
- end
51
- end
52
-
53
- def background(check_interval = nil)
54
- if check_interval
55
- loop do
56
- sleep check_interval
57
- message "Idle for #{check_interval}, shutting down" unless @active
58
- @active = false
59
- Kernel.exit 0
60
- end
61
- else DRb.thread.join
62
- end
63
- end
64
- end
65
-
66
- socket_path = ARGV.shift
67
- instances = ARGV.shift.to_i
68
- t = Tracker.new(instances, socket_path)
69
- t.background(ARGV.first ? ARGV.shift.to_i : 90)
@@ -1,24 +0,0 @@
1
- if ARGV.empty?
2
- puts "Usage: ./script/performance/benchmarker [times] 'Person.expensive_way' 'Person.another_expensive_way' ..."
3
- exit 1
4
- end
5
-
6
- begin
7
- N = Integer(ARGV.first)
8
- ARGV.shift
9
- rescue ArgumentError
10
- N = 1
11
- end
12
-
13
- require RAILS_ROOT + '/config/environment'
14
- require 'benchmark'
15
- include Benchmark
16
-
17
- # Don't include compilation in the benchmark
18
- ARGV.each { |expression| eval(expression) }
19
-
20
- bm(6) do |x|
21
- ARGV.each_with_index do |expression, idx|
22
- x.report("##{idx + 1}") { N.times { eval(expression) } }
23
- end
24
- end
@@ -1,34 +0,0 @@
1
- if ARGV.empty?
2
- $stderr.puts "Usage: ./script/performance/profiler 'Person.expensive_method(10)' [times]"
3
- exit(1)
4
- end
5
-
6
- # Keep the expensive require out of the profile.
7
- $stderr.puts 'Loading Rails...'
8
- require RAILS_ROOT + '/config/environment'
9
-
10
- # Define a method to profile.
11
- if ARGV[1] and ARGV[1].to_i > 1
12
- eval "def profile_me() #{ARGV[1]}.times { #{ARGV[0]} } end"
13
- else
14
- eval "def profile_me() #{ARGV[0]} end"
15
- end
16
-
17
- # Use the ruby-prof extension if available. Fall back to stdlib profiler.
18
- begin
19
- require 'prof'
20
- $stderr.puts 'Using the ruby-prof extension.'
21
- Prof.clock_mode = Prof::GETTIMEOFDAY
22
- Prof.start
23
- profile_me
24
- results = Prof.stop
25
- require 'rubyprof_ext'
26
- Prof.print_profile(results, $stderr)
27
- rescue LoadError
28
- require 'profiler'
29
- $stderr.puts 'Using the standard Ruby profiler.'
30
- Profiler__.start_profile
31
- profile_me
32
- Profiler__.stop_profile
33
- Profiler__.print_profile($stderr)
34
- end