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.
- checksums.yaml +7 -0
- data/README.md +103 -0
- metadata +228 -294
- data/CHANGELOG +0 -865
- data/MIT-LICENSE +0 -20
- data/README +0 -153
- data/Rakefile +0 -422
- data/bin/about +0 -3
- data/bin/breakpointer +0 -3
- data/bin/console +0 -3
- data/bin/destroy +0 -3
- data/bin/generate +0 -3
- data/bin/performance/benchmarker +0 -3
- data/bin/performance/profiler +0 -3
- data/bin/plugin +0 -3
- data/bin/process/reaper +0 -3
- data/bin/process/spawner +0 -3
- data/bin/process/spinner +0 -3
- data/bin/rails +0 -21
- data/bin/runner +0 -3
- data/bin/server +0 -3
- data/builtin/controllers/rails_info_controller.rb +0 -11
- data/configs/apache.conf +0 -40
- data/configs/database.yml +0 -85
- data/configs/empty.log +0 -0
- data/configs/lighttpd.conf +0 -40
- data/configs/routes.rb +0 -19
- data/dispatches/dispatch.fcgi +0 -24
- data/dispatches/dispatch.rb +0 -10
- data/dispatches/gateway.cgi +0 -97
- data/doc/README_FOR_APP +0 -2
- data/environments/boot.rb +0 -19
- data/environments/development.rb +0 -19
- data/environments/environment.rb +0 -53
- data/environments/production.rb +0 -19
- data/environments/test.rb +0 -19
- data/fresh_rakefile +0 -10
- data/helpers/application.rb +0 -4
- data/helpers/application_helper.rb +0 -3
- data/helpers/test_helper.rb +0 -28
- data/html/404.html +0 -8
- data/html/500.html +0 -8
- data/html/favicon.ico +0 -0
- data/html/images/rails.png +0 -0
- data/html/index.html +0 -277
- data/html/javascripts/controls.js +0 -750
- data/html/javascripts/dragdrop.js +0 -584
- data/html/javascripts/effects.js +0 -854
- data/html/javascripts/prototype.js +0 -1785
- data/html/robots.txt +0 -1
- data/lib/binding_of_caller.rb +0 -85
- data/lib/breakpoint.rb +0 -523
- data/lib/breakpoint_client.rb +0 -196
- data/lib/code_statistics.rb +0 -107
- data/lib/commands/about.rb +0 -2
- data/lib/commands/breakpointer.rb +0 -1
- data/lib/commands/console.rb +0 -23
- data/lib/commands/destroy.rb +0 -6
- data/lib/commands/generate.rb +0 -6
- data/lib/commands/ncgi/listener +0 -86
- data/lib/commands/ncgi/tracker +0 -69
- data/lib/commands/performance/benchmarker.rb +0 -24
- data/lib/commands/performance/profiler.rb +0 -34
- data/lib/commands/plugin.rb +0 -823
- data/lib/commands/process/reaper.rb +0 -130
- data/lib/commands/process/spawner.rb +0 -52
- data/lib/commands/process/spinner.rb +0 -57
- data/lib/commands/runner.rb +0 -27
- data/lib/commands/server.rb +0 -28
- data/lib/commands/servers/lighttpd.rb +0 -60
- data/lib/commands/servers/webrick.rb +0 -59
- data/lib/commands/update.rb +0 -4
- data/lib/commands.rb +0 -17
- data/lib/console_sandbox.rb +0 -6
- data/lib/dispatcher.rb +0 -99
- data/lib/fcgi_handler.rb +0 -189
- data/lib/initializer.rb +0 -553
- data/lib/rails_generator/base.rb +0 -203
- data/lib/rails_generator/commands.rb +0 -509
- data/lib/rails_generator/generators/applications/app/USAGE +0 -16
- data/lib/rails_generator/generators/applications/app/app_generator.rb +0 -140
- data/lib/rails_generator/generators/components/controller/USAGE +0 -30
- data/lib/rails_generator/generators/components/controller/controller_generator.rb +0 -38
- data/lib/rails_generator/generators/components/controller/templates/controller.rb +0 -10
- data/lib/rails_generator/generators/components/controller/templates/functional_test.rb +0 -18
- data/lib/rails_generator/generators/components/controller/templates/helper.rb +0 -2
- data/lib/rails_generator/generators/components/controller/templates/view.rhtml +0 -2
- data/lib/rails_generator/generators/components/mailer/USAGE +0 -18
- data/lib/rails_generator/generators/components/mailer/mailer_generator.rb +0 -32
- data/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml +0 -3
- data/lib/rails_generator/generators/components/mailer/templates/mailer.rb +0 -13
- data/lib/rails_generator/generators/components/mailer/templates/unit_test.rb +0 -37
- data/lib/rails_generator/generators/components/mailer/templates/view.rhtml +0 -3
- data/lib/rails_generator/generators/components/migration/USAGE +0 -14
- data/lib/rails_generator/generators/components/migration/migration_generator.rb +0 -7
- data/lib/rails_generator/generators/components/migration/templates/migration.rb +0 -7
- data/lib/rails_generator/generators/components/model/USAGE +0 -17
- data/lib/rails_generator/generators/components/model/model_generator.rb +0 -18
- data/lib/rails_generator/generators/components/model/templates/fixtures.yml +0 -5
- data/lib/rails_generator/generators/components/model/templates/model.rb +0 -2
- data/lib/rails_generator/generators/components/model/templates/unit_test.rb +0 -10
- data/lib/rails_generator/generators/components/plugin/USAGE +0 -33
- data/lib/rails_generator/generators/components/plugin/plugin_generator.rb +0 -33
- data/lib/rails_generator/generators/components/plugin/templates/README +0 -4
- data/lib/rails_generator/generators/components/plugin/templates/Rakefile +0 -22
- data/lib/rails_generator/generators/components/plugin/templates/USAGE +0 -8
- data/lib/rails_generator/generators/components/plugin/templates/generator.rb +0 -8
- data/lib/rails_generator/generators/components/plugin/templates/init.rb +0 -1
- data/lib/rails_generator/generators/components/plugin/templates/plugin.rb +0 -1
- data/lib/rails_generator/generators/components/plugin/templates/tasks.rake +0 -4
- data/lib/rails_generator/generators/components/plugin/templates/unit_test.rb +0 -8
- data/lib/rails_generator/generators/components/scaffold/USAGE +0 -32
- data/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +0 -184
- data/lib/rails_generator/generators/components/scaffold/templates/controller.rb +0 -54
- data/lib/rails_generator/generators/components/scaffold/templates/form.rhtml +0 -3
- data/lib/rails_generator/generators/components/scaffold/templates/form_scaffolding.rhtml +0 -1
- data/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb +0 -98
- data/lib/rails_generator/generators/components/scaffold/templates/helper.rb +0 -2
- data/lib/rails_generator/generators/components/scaffold/templates/layout.rhtml +0 -13
- data/lib/rails_generator/generators/components/scaffold/templates/style.css +0 -74
- data/lib/rails_generator/generators/components/scaffold/templates/view_edit.rhtml +0 -9
- data/lib/rails_generator/generators/components/scaffold/templates/view_list.rhtml +0 -27
- data/lib/rails_generator/generators/components/scaffold/templates/view_new.rhtml +0 -8
- data/lib/rails_generator/generators/components/scaffold/templates/view_show.rhtml +0 -8
- data/lib/rails_generator/generators/components/session_migration/USAGE +0 -15
- data/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb +0 -12
- data/lib/rails_generator/generators/components/session_migration/templates/migration.rb +0 -15
- data/lib/rails_generator/generators/components/web_service/USAGE +0 -28
- data/lib/rails_generator/generators/components/web_service/templates/api_definition.rb +0 -5
- data/lib/rails_generator/generators/components/web_service/templates/controller.rb +0 -8
- data/lib/rails_generator/generators/components/web_service/templates/functional_test.rb +0 -19
- data/lib/rails_generator/generators/components/web_service/web_service_generator.rb +0 -29
- data/lib/rails_generator/lookup.rb +0 -210
- data/lib/rails_generator/manifest.rb +0 -53
- data/lib/rails_generator/options.rb +0 -140
- data/lib/rails_generator/scripts/destroy.rb +0 -7
- data/lib/rails_generator/scripts/generate.rb +0 -7
- data/lib/rails_generator/scripts/update.rb +0 -12
- data/lib/rails_generator/scripts.rb +0 -83
- data/lib/rails_generator/simple_logger.rb +0 -46
- data/lib/rails_generator/spec.rb +0 -44
- data/lib/rails_generator.rb +0 -43
- data/lib/rails_info.rb +0 -104
- data/lib/rails_version.rb +0 -9
- data/lib/railties_path.rb +0 -1
- data/lib/rubyprof_ext.rb +0 -35
- data/lib/tasks/databases.rake +0 -158
- data/lib/tasks/documentation.rake +0 -76
- data/lib/tasks/framework.rake +0 -71
- data/lib/tasks/javascripts.rake +0 -6
- data/lib/tasks/misc.rake +0 -19
- data/lib/tasks/rails.rb +0 -8
- data/lib/tasks/statistics.rake +0 -16
- data/lib/tasks/testing.rake +0 -50
- data/lib/test_help.rb +0 -17
- data/lib/webrick_server.rb +0 -170
data/lib/breakpoint_client.rb
DELETED
@@ -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
|
data/lib/code_statistics.rb
DELETED
@@ -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
|
data/lib/commands/about.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require 'breakpoint_client'
|
data/lib/commands/console.rb
DELETED
@@ -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"
|
data/lib/commands/destroy.rb
DELETED
data/lib/commands/generate.rb
DELETED
data/lib/commands/ncgi/listener
DELETED
@@ -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)
|
data/lib/commands/ncgi/tracker
DELETED
@@ -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
|