rails 2.3.18 → 7.1.3.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +2 -2
- data/README.md +97 -0
- metadata +207 -332
- data/CHANGELOG +0 -2193
- data/README +0 -243
- data/Rakefile +0 -365
- data/bin/about +0 -4
- data/bin/console +0 -3
- data/bin/dbconsole +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/rails +0 -21
- data/bin/runner +0 -3
- data/bin/server +0 -3
- data/builtin/rails_info/rails/info.rb +0 -131
- data/builtin/rails_info/rails/info_controller.rb +0 -9
- data/builtin/rails_info/rails/info_helper.rb +0 -2
- data/builtin/rails_info/rails_info_controller.rb +0 -2
- data/configs/databases/frontbase.yml +0 -28
- data/configs/databases/ibm_db.yml +0 -62
- data/configs/databases/mysql.yml +0 -60
- data/configs/databases/oracle.yml +0 -39
- data/configs/databases/postgresql.yml +0 -51
- data/configs/databases/sqlite2.yml +0 -19
- data/configs/databases/sqlite3.yml +0 -22
- data/configs/empty.log +0 -0
- data/configs/initializers/backtrace_silencers.rb +0 -7
- data/configs/initializers/cookie_verification_secret.rb +0 -7
- data/configs/initializers/inflections.rb +0 -10
- data/configs/initializers/mime_types.rb +0 -5
- data/configs/initializers/new_rails_defaults.rb +0 -21
- data/configs/initializers/session_store.rb +0 -15
- data/configs/locales/en.yml +0 -5
- data/configs/routes.rb +0 -43
- data/configs/seeds.rb +0 -7
- data/dispatches/config.ru +0 -7
- 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 -114
- data/environments/development.rb +0 -17
- data/environments/environment.rb +0 -41
- data/environments/production.rb +0 -28
- data/environments/test.rb +0 -28
- data/fresh_rakefile +0 -10
- data/helpers/application_controller.rb +0 -10
- data/helpers/application_helper.rb +0 -3
- data/helpers/performance_test.rb +0 -9
- data/helpers/test_helper.rb +0 -38
- data/html/404.html +0 -30
- data/html/422.html +0 -30
- data/html/500.html +0 -30
- data/html/favicon.ico +0 -0
- data/html/images/rails.png +0 -0
- data/html/index.html +0 -275
- data/html/javascripts/application.js +0 -2
- data/html/javascripts/controls.js +0 -963
- data/html/javascripts/dragdrop.js +0 -973
- data/html/javascripts/effects.js +0 -1128
- data/html/javascripts/prototype.js +0 -4320
- data/html/robots.txt +0 -5
- data/lib/code_statistics.rb +0 -107
- data/lib/commands/about.rb +0 -3
- data/lib/commands/console.rb +0 -45
- data/lib/commands/dbconsole.rb +0 -87
- 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 -50
- data/lib/commands/plugin.rb +0 -968
- data/lib/commands/runner.rb +0 -54
- data/lib/commands/server.rb +0 -114
- data/lib/commands/update.rb +0 -4
- data/lib/commands.rb +0 -17
- data/lib/console_app.rb +0 -30
- data/lib/console_sandbox.rb +0 -6
- data/lib/console_with_helpers.rb +0 -5
- data/lib/dispatcher.rb +0 -24
- data/lib/fcgi_handler.rb +0 -239
- data/lib/initializer.rb +0 -1152
- data/lib/performance_test_help.rb +0 -5
- data/lib/rails/backtrace_cleaner.rb +0 -54
- data/lib/rails/gem_builder.rb +0 -21
- data/lib/rails/gem_dependency.rb +0 -317
- data/lib/rails/plugin/loader.rb +0 -198
- data/lib/rails/plugin/locator.rb +0 -100
- data/lib/rails/plugin.rb +0 -179
- data/lib/rails/rack/debugger.rb +0 -23
- data/lib/rails/rack/log_tailer.rb +0 -35
- data/lib/rails/rack/metal.rb +0 -51
- data/lib/rails/rack/static.rb +0 -46
- data/lib/rails/rack.rb +0 -8
- data/lib/rails/vendor_gem_source_index.rb +0 -140
- data/lib/rails/version.rb +0 -9
- data/lib/rails_generator/base.rb +0 -266
- data/lib/rails_generator/commands.rb +0 -621
- data/lib/rails_generator/generated_attribute.rb +0 -47
- data/lib/rails_generator/generators/applications/app/USAGE +0 -9
- data/lib/rails_generator/generators/applications/app/app_generator.rb +0 -266
- data/lib/rails_generator/generators/applications/app/scm/git.rb +0 -18
- data/lib/rails_generator/generators/applications/app/scm/scm.rb +0 -8
- data/lib/rails_generator/generators/applications/app/scm/svn.rb +0 -7
- data/lib/rails_generator/generators/applications/app/template_runner.rb +0 -401
- data/lib/rails_generator/generators/components/controller/USAGE +0 -30
- data/lib/rails_generator/generators/components/controller/controller_generator.rb +0 -43
- data/lib/rails_generator/generators/components/controller/templates/controller.rb +0 -7
- data/lib/rails_generator/generators/components/controller/templates/functional_test.rb +0 -8
- data/lib/rails_generator/generators/components/controller/templates/helper.rb +0 -2
- data/lib/rails_generator/generators/components/controller/templates/helper_test.rb +0 -4
- data/lib/rails_generator/generators/components/controller/templates/view.html.erb +0 -2
- data/lib/rails_generator/generators/components/helper/USAGE +0 -24
- data/lib/rails_generator/generators/components/helper/helper_generator.rb +0 -25
- data/lib/rails_generator/generators/components/helper/templates/helper.rb +0 -2
- data/lib/rails_generator/generators/components/helper/templates/helper_test.rb +0 -4
- data/lib/rails_generator/generators/components/integration_test/USAGE +0 -8
- data/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb +0 -16
- data/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb +0 -10
- data/lib/rails_generator/generators/components/mailer/USAGE +0 -16
- data/lib/rails_generator/generators/components/mailer/mailer_generator.rb +0 -30
- data/lib/rails_generator/generators/components/mailer/templates/fixture.erb +0 -3
- data/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml +0 -0
- data/lib/rails_generator/generators/components/mailer/templates/mailer.rb +0 -15
- data/lib/rails_generator/generators/components/mailer/templates/unit_test.rb +0 -20
- data/lib/rails_generator/generators/components/mailer/templates/view.erb +0 -3
- data/lib/rails_generator/generators/components/mailer/templates/view.rhtml +0 -0
- data/lib/rails_generator/generators/components/metal/USAGE +0 -8
- data/lib/rails_generator/generators/components/metal/metal_generator.rb +0 -8
- data/lib/rails_generator/generators/components/metal/templates/metal.rb +0 -12
- data/lib/rails_generator/generators/components/migration/USAGE +0 -29
- data/lib/rails_generator/generators/components/migration/migration_generator.rb +0 -20
- data/lib/rails_generator/generators/components/migration/templates/migration.rb +0 -11
- data/lib/rails_generator/generators/components/model/USAGE +0 -27
- data/lib/rails_generator/generators/components/model/model_generator.rb +0 -52
- data/lib/rails_generator/generators/components/model/templates/fixtures.yml +0 -23
- data/lib/rails_generator/generators/components/model/templates/migration.rb +0 -16
- data/lib/rails_generator/generators/components/model/templates/model.rb +0 -5
- data/lib/rails_generator/generators/components/model/templates/unit_test.rb +0 -8
- data/lib/rails_generator/generators/components/observer/USAGE +0 -13
- data/lib/rails_generator/generators/components/observer/observer_generator.rb +0 -16
- data/lib/rails_generator/generators/components/observer/templates/observer.rb +0 -2
- data/lib/rails_generator/generators/components/observer/templates/unit_test.rb +0 -8
- data/lib/rails_generator/generators/components/performance_test/USAGE +0 -8
- data/lib/rails_generator/generators/components/performance_test/performance_test_generator.rb +0 -16
- data/lib/rails_generator/generators/components/performance_test/templates/performance_test.rb +0 -9
- data/lib/rails_generator/generators/components/plugin/USAGE +0 -25
- data/lib/rails_generator/generators/components/plugin/plugin_generator.rb +0 -39
- data/lib/rails_generator/generators/components/plugin/templates/MIT-LICENSE +0 -20
- data/lib/rails_generator/generators/components/plugin/templates/README +0 -13
- data/lib/rails_generator/generators/components/plugin/templates/Rakefile +0 -23
- 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/install.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/test_helper.rb +0 -4
- data/lib/rails_generator/generators/components/plugin/templates/uninstall.rb +0 -1
- data/lib/rails_generator/generators/components/plugin/templates/unit_test.rb +0 -8
- data/lib/rails_generator/generators/components/resource/USAGE +0 -23
- data/lib/rails_generator/generators/components/resource/resource_generator.rb +0 -76
- data/lib/rails_generator/generators/components/resource/templates/controller.rb +0 -2
- data/lib/rails_generator/generators/components/resource/templates/functional_test.rb +0 -8
- data/lib/rails_generator/generators/components/resource/templates/helper.rb +0 -2
- data/lib/rails_generator/generators/components/resource/templates/helper_test.rb +0 -4
- data/lib/rails_generator/generators/components/scaffold/USAGE +0 -29
- data/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +0 -103
- data/lib/rails_generator/generators/components/scaffold/templates/controller.rb +0 -83
- data/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb +0 -45
- data/lib/rails_generator/generators/components/scaffold/templates/helper.rb +0 -2
- data/lib/rails_generator/generators/components/scaffold/templates/helper_test.rb +0 -4
- data/lib/rails_generator/generators/components/scaffold/templates/layout.html.erb +0 -17
- data/lib/rails_generator/generators/components/scaffold/templates/style.css +0 -54
- data/lib/rails_generator/generators/components/scaffold/templates/view_edit.html.erb +0 -18
- data/lib/rails_generator/generators/components/scaffold/templates/view_index.html.erb +0 -24
- data/lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb +0 -17
- data/lib/rails_generator/generators/components/scaffold/templates/view_show.html.erb +0 -10
- data/lib/rails_generator/generators/components/session_migration/USAGE +0 -10
- data/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb +0 -18
- data/lib/rails_generator/generators/components/session_migration/templates/migration.rb +0 -16
- data/lib/rails_generator/lookup.rb +0 -249
- data/lib/rails_generator/manifest.rb +0 -53
- data/lib/rails_generator/options.rb +0 -150
- data/lib/rails_generator/scripts/destroy.rb +0 -29
- 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 -89
- data/lib/rails_generator/secret_key_generator.rb +0 -24
- data/lib/rails_generator/simple_logger.rb +0 -46
- data/lib/rails_generator/spec.rb +0 -44
- data/lib/rails_generator.rb +0 -46
- data/lib/railties_path.rb +0 -1
- data/lib/ruby_version_check.rb +0 -17
- data/lib/rubyprof_ext.rb +0 -35
- data/lib/source_annotation_extractor.rb +0 -102
- data/lib/tasks/annotations.rake +0 -20
- data/lib/tasks/databases.rake +0 -436
- data/lib/tasks/documentation.rake +0 -93
- data/lib/tasks/framework.rake +0 -146
- data/lib/tasks/gems.rake +0 -78
- data/lib/tasks/log.rake +0 -9
- data/lib/tasks/middleware.rake +0 -7
- data/lib/tasks/misc.rake +0 -63
- data/lib/tasks/rails.rb +0 -14
- data/lib/tasks/routes.rake +0 -18
- data/lib/tasks/statistics.rake +0 -17
- data/lib/tasks/testing.rake +0 -139
- data/lib/tasks/tmp.rake +0 -37
- data/lib/test_help.rb +0 -38
- data/lib/webrick_server.rb +0 -156
- data/railties.gemspec +0 -22
data/html/robots.txt
DELETED
data/lib/code_statistics.rb
DELETED
@@ -1,107 +0,0 @@
|
|
1
|
-
class CodeStatistics #:nodoc:
|
2
|
-
|
3
|
-
TEST_TYPES = %w(Units Functionals Unit\ tests Functional\ tests Integration\ 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(20)} "
|
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
data/lib/commands/console.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
|
2
|
-
|
3
|
-
require 'optparse'
|
4
|
-
|
5
|
-
options = { :sandbox => false, :irb => irb }
|
6
|
-
OptionParser.new do |opt|
|
7
|
-
opt.banner = "Usage: console [environment] [options]"
|
8
|
-
opt.on('-s', '--sandbox', 'Rollback database modifications on exit.') { |v| options[:sandbox] = v }
|
9
|
-
opt.on("--irb=[#{irb}]", 'Invoke a different irb.') { |v| options[:irb] = v }
|
10
|
-
opt.on("--debugger", 'Enable ruby-debugging for the console.') { |v| options[:debugger] = v }
|
11
|
-
opt.parse!(ARGV)
|
12
|
-
end
|
13
|
-
|
14
|
-
libs = " -r irb/completion"
|
15
|
-
libs << %( -r "#{RAILS_ROOT}/config/environment")
|
16
|
-
libs << " -r console_app"
|
17
|
-
libs << " -r console_sandbox" if options[:sandbox]
|
18
|
-
libs << " -r console_with_helpers"
|
19
|
-
|
20
|
-
if options[:debugger]
|
21
|
-
begin
|
22
|
-
require 'ruby-debug'
|
23
|
-
libs << " -r ruby-debug"
|
24
|
-
puts "=> Debugger enabled"
|
25
|
-
rescue Exception
|
26
|
-
puts "You need to install ruby-debug to run the console in debugging mode. With gems, use 'gem install ruby-debug'"
|
27
|
-
exit
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
ENV['RAILS_ENV'] = case ARGV.first
|
32
|
-
when "p"; "production"
|
33
|
-
when "d"; "development"
|
34
|
-
when "t"; "test"
|
35
|
-
else
|
36
|
-
ARGV.first || ENV['RAILS_ENV'] || 'development'
|
37
|
-
end
|
38
|
-
|
39
|
-
if options[:sandbox]
|
40
|
-
puts "Loading #{ENV['RAILS_ENV']} environment in sandbox (Rails #{Rails.version})"
|
41
|
-
puts "Any modifications you make will be rolled back on exit"
|
42
|
-
else
|
43
|
-
puts "Loading #{ENV['RAILS_ENV']} environment (Rails #{Rails.version})"
|
44
|
-
end
|
45
|
-
exec "#{options[:irb]} #{libs} --simple-prompt"
|
data/lib/commands/dbconsole.rb
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
require 'erb'
|
2
|
-
require 'yaml'
|
3
|
-
require 'optparse'
|
4
|
-
|
5
|
-
include_password = false
|
6
|
-
options = {}
|
7
|
-
|
8
|
-
OptionParser.new do |opt|
|
9
|
-
opt.banner = "Usage: dbconsole [options] [environment]"
|
10
|
-
opt.on("-p", "--include-password", "Automatically provide the password from database.yml") do |v|
|
11
|
-
include_password = true
|
12
|
-
end
|
13
|
-
|
14
|
-
opt.on("--mode [MODE]", ['html', 'list', 'line', 'column'],
|
15
|
-
"Automatically put the sqlite3 database in the specified mode (html, list, line, column).") do |mode|
|
16
|
-
options['mode'] = mode
|
17
|
-
end
|
18
|
-
|
19
|
-
opt.on("-h", "--header") do |h|
|
20
|
-
options['header'] = h
|
21
|
-
end
|
22
|
-
|
23
|
-
opt.parse!(ARGV)
|
24
|
-
abort opt.to_s unless (0..1).include?(ARGV.size)
|
25
|
-
end
|
26
|
-
|
27
|
-
env = ARGV.first || ENV['RAILS_ENV'] || 'development'
|
28
|
-
unless config = YAML::load(ERB.new(IO.read(RAILS_ROOT + "/config/database.yml")).result)[env]
|
29
|
-
abort "No database is configured for the environment '#{env}'"
|
30
|
-
end
|
31
|
-
|
32
|
-
|
33
|
-
def find_cmd(*commands)
|
34
|
-
dirs_on_path = ENV['PATH'].to_s.split(File::PATH_SEPARATOR)
|
35
|
-
commands += commands.map{|cmd| "#{cmd}.exe"} if RUBY_PLATFORM =~ /win32/
|
36
|
-
|
37
|
-
full_path_command = nil
|
38
|
-
found = commands.detect do |cmd|
|
39
|
-
dir = dirs_on_path.detect do |path|
|
40
|
-
full_path_command = File.join(path, cmd)
|
41
|
-
File.executable? full_path_command
|
42
|
-
end
|
43
|
-
end
|
44
|
-
found ? full_path_command : abort("Couldn't find database client: #{commands.join(', ')}. Check your $PATH and try again.")
|
45
|
-
end
|
46
|
-
|
47
|
-
case config["adapter"]
|
48
|
-
when /^mysql/
|
49
|
-
args = {
|
50
|
-
'host' => '--host',
|
51
|
-
'port' => '--port',
|
52
|
-
'socket' => '--socket',
|
53
|
-
'username' => '--user',
|
54
|
-
'encoding' => '--default-character-set'
|
55
|
-
}.map { |opt, arg| "#{arg}=#{config[opt]}" if config[opt] }.compact
|
56
|
-
|
57
|
-
if config['password'] && include_password
|
58
|
-
args << "--password=#{config['password']}"
|
59
|
-
elsif config['password'] && !config['password'].to_s.empty?
|
60
|
-
args << "-p"
|
61
|
-
end
|
62
|
-
|
63
|
-
args << config['database']
|
64
|
-
|
65
|
-
exec(find_cmd('mysql', 'mysql5'), *args)
|
66
|
-
|
67
|
-
when "postgresql"
|
68
|
-
ENV['PGUSER'] = config["username"] if config["username"]
|
69
|
-
ENV['PGHOST'] = config["host"] if config["host"]
|
70
|
-
ENV['PGPORT'] = config["port"].to_s if config["port"]
|
71
|
-
ENV['PGPASSWORD'] = config["password"].to_s if config["password"] && include_password
|
72
|
-
exec(find_cmd('psql'), config["database"])
|
73
|
-
|
74
|
-
when "sqlite"
|
75
|
-
exec(find_cmd('sqlite'), config["database"])
|
76
|
-
|
77
|
-
when "sqlite3"
|
78
|
-
args = []
|
79
|
-
|
80
|
-
args << "-#{options['mode']}" if options['mode']
|
81
|
-
args << "-header" if options['header']
|
82
|
-
args << config['database']
|
83
|
-
|
84
|
-
exec(find_cmd('sqlite3'), *args)
|
85
|
-
else
|
86
|
-
abort "Unknown command-line client for #{config['database']}. Submit a Rails patch to add support!"
|
87
|
-
end
|
data/lib/commands/destroy.rb
DELETED
data/lib/commands/generate.rb
DELETED
data/lib/commands/ncgi/listener
DELETED
@@ -1,86 +0,0 @@
|
|
1
|
-
#!/usr/bin/env 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/bin/env 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,50 +0,0 @@
|
|
1
|
-
if ARGV.empty?
|
2
|
-
$stderr.puts "Usage: ./script/performance/profiler 'Person.expensive_method(10)' [times] [flat|graph|graph_html]"
|
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
|
-
begin
|
20
|
-
require "ruby-prof"
|
21
|
-
$stderr.puts 'Using the ruby-prof extension.'
|
22
|
-
RubyProf.measure_mode = RubyProf::WALL_TIME
|
23
|
-
RubyProf.start
|
24
|
-
profile_me
|
25
|
-
results = RubyProf.stop
|
26
|
-
if ARGV[2]
|
27
|
-
printer_class = RubyProf.const_get((ARGV[2] + "_printer").classify)
|
28
|
-
else
|
29
|
-
printer_class = RubyProf::FlatPrinter
|
30
|
-
end
|
31
|
-
printer = printer_class.new(results)
|
32
|
-
printer.print($stderr)
|
33
|
-
rescue LoadError
|
34
|
-
require "prof"
|
35
|
-
$stderr.puts 'Using the old ruby-prof extension.'
|
36
|
-
Prof.clock_mode = Prof::GETTIMEOFDAY
|
37
|
-
Prof.start
|
38
|
-
profile_me
|
39
|
-
results = Prof.stop
|
40
|
-
require 'rubyprof_ext'
|
41
|
-
Prof.print_profile(results, $stderr)
|
42
|
-
end
|
43
|
-
rescue LoadError
|
44
|
-
require 'profiler'
|
45
|
-
$stderr.puts 'Using the standard Ruby profiler.'
|
46
|
-
Profiler__.start_profile
|
47
|
-
profile_me
|
48
|
-
Profiler__.stop_profile
|
49
|
-
Profiler__.print_profile($stderr)
|
50
|
-
end
|