rails 2.3.18 → 3.0.0.beta
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.
- metadata +61 -295
- data/CHANGELOG +0 -2193
- data/MIT-LICENSE +0 -20
- 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.rb +0 -17
- 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/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.rb +0 -179
- data/lib/rails/plugin/loader.rb +0 -198
- data/lib/rails/plugin/locator.rb +0 -100
- data/lib/rails/rack.rb +0 -8
- 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/vendor_gem_source_index.rb +0 -140
- data/lib/rails/version.rb +0 -9
- data/lib/rails_generator.rb +0 -46
- 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.rb +0 -89
- 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/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/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
@@ -1,89 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/options'
|
2
|
-
|
3
|
-
module Rails
|
4
|
-
module Generator
|
5
|
-
module Scripts
|
6
|
-
|
7
|
-
# Generator scripts handle command-line invocation. Each script
|
8
|
-
# responds to an invoke! class method which handles option parsing
|
9
|
-
# and generator invocation.
|
10
|
-
class Base
|
11
|
-
include Options
|
12
|
-
default_options :collision => :ask, :quiet => false
|
13
|
-
|
14
|
-
# Run the generator script. Takes an array of unparsed arguments
|
15
|
-
# and a hash of parsed arguments, takes the generator as an option
|
16
|
-
# or first remaining argument, and invokes the requested command.
|
17
|
-
def run(args = [], runtime_options = {})
|
18
|
-
begin
|
19
|
-
parse!(args.dup, runtime_options)
|
20
|
-
rescue OptionParser::InvalidOption => e
|
21
|
-
# Don't cry, script. Generators want what you think is invalid.
|
22
|
-
end
|
23
|
-
|
24
|
-
# Generator name is the only required option.
|
25
|
-
unless options[:generator]
|
26
|
-
usage if args.empty?
|
27
|
-
options[:generator] ||= args.shift
|
28
|
-
end
|
29
|
-
|
30
|
-
# Look up generator instance and invoke command on it.
|
31
|
-
Rails::Generator::Base.instance(options[:generator], args, options).command(options[:command]).invoke!
|
32
|
-
rescue => e
|
33
|
-
puts e
|
34
|
-
puts " #{e.backtrace.join("\n ")}\n" if options[:backtrace]
|
35
|
-
raise SystemExit
|
36
|
-
end
|
37
|
-
|
38
|
-
protected
|
39
|
-
# Override with your own script usage banner.
|
40
|
-
def banner
|
41
|
-
"Usage: #{$0} generator [options] [args]"
|
42
|
-
end
|
43
|
-
|
44
|
-
def usage_message
|
45
|
-
usage = "\nInstalled Generators\n"
|
46
|
-
Rails::Generator::Base.sources.inject([]) do |mem, source|
|
47
|
-
# Using an association list instead of a hash to preserve order,
|
48
|
-
# for aesthetic reasons more than anything else.
|
49
|
-
label = source.label.to_s.capitalize
|
50
|
-
pair = mem.assoc(label)
|
51
|
-
mem << (pair = [label, []]) if pair.nil?
|
52
|
-
pair[1] |= source.names
|
53
|
-
mem
|
54
|
-
end.each do |label, names|
|
55
|
-
usage << " #{label}: #{names.join(', ')}\n" unless names.empty?
|
56
|
-
end
|
57
|
-
|
58
|
-
usage << <<end_blurb
|
59
|
-
|
60
|
-
More are available at http://wiki.rubyonrails.org/rails/pages/AvailableGenerators
|
61
|
-
1. Download, for example, login_generator.zip
|
62
|
-
2. Unzip to directory #{Dir.user_home}/.rails/generators/login
|
63
|
-
to use the generator with all your Rails apps
|
64
|
-
end_blurb
|
65
|
-
|
66
|
-
if Object.const_defined?(:RAILS_ROOT)
|
67
|
-
usage << <<end_blurb
|
68
|
-
or to #{File.expand_path(RAILS_ROOT)}/lib/generators/login
|
69
|
-
to use with this app only.
|
70
|
-
end_blurb
|
71
|
-
end
|
72
|
-
|
73
|
-
usage << <<end_blurb
|
74
|
-
3. Run generate with no arguments for usage information
|
75
|
-
#{$0} login
|
76
|
-
|
77
|
-
Generator gems are also available:
|
78
|
-
1. gem search -r generator
|
79
|
-
2. gem install login_generator
|
80
|
-
3. #{$0} login
|
81
|
-
|
82
|
-
end_blurb
|
83
|
-
return usage
|
84
|
-
end
|
85
|
-
end # Base
|
86
|
-
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../scripts'
|
2
|
-
|
3
|
-
module Rails::Generator::Scripts
|
4
|
-
class Destroy < Base
|
5
|
-
mandatory_options :command => :destroy
|
6
|
-
|
7
|
-
protected
|
8
|
-
def usage_message
|
9
|
-
usage = "\nInstalled Generators\n"
|
10
|
-
Rails::Generator::Base.sources.each do |source|
|
11
|
-
label = source.label.to_s.capitalize
|
12
|
-
names = source.names
|
13
|
-
usage << " #{label}: #{names.join(', ')}\n" unless names.empty?
|
14
|
-
end
|
15
|
-
|
16
|
-
usage << <<end_blurb
|
17
|
-
|
18
|
-
script/generate command. For instance, 'script/destroy migration CreatePost'
|
19
|
-
will delete the appropriate XXX_create_post.rb migration file in db/migrate,
|
20
|
-
while 'script/destroy scaffold Post' will delete the posts controller and
|
21
|
-
views, post model and migration, all associated tests, and the map.resources
|
22
|
-
:posts line in config/routes.rb.
|
23
|
-
|
24
|
-
For instructions on finding new generators, run script/generate.
|
25
|
-
end_blurb
|
26
|
-
return usage
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'active_support/deprecation'
|
2
|
-
|
3
|
-
module Rails
|
4
|
-
# A class for creating random secret keys. This class will do its best to create a
|
5
|
-
# random secret key that's as secure as possible, using whatever methods are
|
6
|
-
# available on the current platform. For example:
|
7
|
-
#
|
8
|
-
# generator = Rails::SecretKeyGenerator("some unique identifier, such as the application name")
|
9
|
-
# generator.generate_secret # => "f3f1be90053fa851... (some long string)"
|
10
|
-
#
|
11
|
-
# This class is *deprecated* in Rails 2.2 in favor of ActiveSupport::SecureRandom.
|
12
|
-
# It is currently a wrapper around ActiveSupport::SecureRandom.
|
13
|
-
class SecretKeyGenerator
|
14
|
-
def initialize(identifier)
|
15
|
-
end
|
16
|
-
|
17
|
-
# Generate a random secret key with the best possible method available on
|
18
|
-
# the current platform.
|
19
|
-
def generate_secret
|
20
|
-
ActiveSupport::SecureRandom.hex(64)
|
21
|
-
end
|
22
|
-
deprecate :generate_secret=>"You should use ActiveSupport::SecureRandom.hex(64)"
|
23
|
-
end
|
24
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
module Rails
|
2
|
-
module Generator
|
3
|
-
class SimpleLogger # :nodoc:
|
4
|
-
attr_reader :out
|
5
|
-
attr_accessor :quiet
|
6
|
-
|
7
|
-
def initialize(out = $stdout)
|
8
|
-
@out = out
|
9
|
-
@quiet = false
|
10
|
-
@level = 0
|
11
|
-
end
|
12
|
-
|
13
|
-
def log(status, message, &block)
|
14
|
-
@out.print("%12s %s%s\n" % [status, ' ' * @level, message]) unless quiet
|
15
|
-
indent(&block) if block_given?
|
16
|
-
end
|
17
|
-
|
18
|
-
def indent(&block)
|
19
|
-
@level += 1
|
20
|
-
if block_given?
|
21
|
-
begin
|
22
|
-
block.call
|
23
|
-
ensure
|
24
|
-
outdent
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def outdent
|
30
|
-
@level -= 1
|
31
|
-
if block_given?
|
32
|
-
begin
|
33
|
-
block.call
|
34
|
-
ensure
|
35
|
-
indent
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
private
|
41
|
-
def method_missing(method, *args, &block)
|
42
|
-
log(method.to_s, args.first, &block)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
data/lib/rails_generator/spec.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
module Rails
|
2
|
-
module Generator
|
3
|
-
# A spec knows where a generator was found and how to instantiate it.
|
4
|
-
# Metadata include the generator's name, its base path, and the source
|
5
|
-
# which yielded it (PathSource, GemPathSource, etc.)
|
6
|
-
class Spec
|
7
|
-
attr_reader :name, :path, :source
|
8
|
-
|
9
|
-
def initialize(name, path, source)
|
10
|
-
@name, @path, @source = name, path, source
|
11
|
-
end
|
12
|
-
|
13
|
-
# Look up the generator class. Require its class file, find the class
|
14
|
-
# in ObjectSpace, tag it with this spec, and return.
|
15
|
-
def klass
|
16
|
-
unless @klass
|
17
|
-
require class_file
|
18
|
-
@klass = lookup_class
|
19
|
-
@klass.spec = self
|
20
|
-
end
|
21
|
-
@klass
|
22
|
-
end
|
23
|
-
|
24
|
-
def class_file
|
25
|
-
"#{path}/#{name}_generator.rb"
|
26
|
-
end
|
27
|
-
|
28
|
-
def class_name
|
29
|
-
"#{name.camelize}Generator"
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
# Search for the first Class descending from Rails::Generator::Base
|
34
|
-
# whose name matches the requested class name.
|
35
|
-
def lookup_class
|
36
|
-
ObjectSpace.each_object(Class) do |obj|
|
37
|
-
return obj if obj.ancestors.include?(Rails::Generator::Base) and
|
38
|
-
obj.name.split('::').last == class_name
|
39
|
-
end
|
40
|
-
raise NameError, "Missing #{class_name} class in #{class_file}"
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
data/lib/railties_path.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
RAILTIES_PATH = File.join(File.dirname(__FILE__), '..')
|
data/lib/ruby_version_check.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
min_release = "1.8.2 (2004-12-25)"
|
2
|
-
ruby_release = "#{RUBY_VERSION} (#{RUBY_RELEASE_DATE})"
|
3
|
-
if ruby_release =~ /1\.8\.3/
|
4
|
-
abort <<-end_message
|
5
|
-
|
6
|
-
Rails does not work with Ruby version 1.8.3.
|
7
|
-
Please upgrade to version 1.8.4 or downgrade to 1.8.2.
|
8
|
-
|
9
|
-
end_message
|
10
|
-
elsif ruby_release < min_release
|
11
|
-
abort <<-end_message
|
12
|
-
|
13
|
-
Rails requires Ruby version #{min_release} or later.
|
14
|
-
You're running #{ruby_release}; please upgrade to continue.
|
15
|
-
|
16
|
-
end_message
|
17
|
-
end
|
data/lib/rubyprof_ext.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'prof'
|
2
|
-
|
3
|
-
module Prof #:nodoc:
|
4
|
-
# Adapted from Shugo Maeda's unprof.rb
|
5
|
-
def self.print_profile(results, io = $stderr)
|
6
|
-
total = results.detect { |i|
|
7
|
-
i.method_class.nil? && i.method_id == :"#toplevel"
|
8
|
-
}.total_time
|
9
|
-
total = 0.001 if total < 0.001
|
10
|
-
|
11
|
-
io.puts " %% cumulative self self total"
|
12
|
-
io.puts " time seconds seconds calls ms/call ms/call name"
|
13
|
-
|
14
|
-
sum = 0.0
|
15
|
-
for r in results
|
16
|
-
sum += r.self_time
|
17
|
-
|
18
|
-
name = if r.method_class.nil?
|
19
|
-
r.method_id.to_s
|
20
|
-
elsif r.method_class.is_a?(Class)
|
21
|
-
"#{r.method_class}##{r.method_id}"
|
22
|
-
else
|
23
|
-
"#{r.method_class}.#{r.method_id}"
|
24
|
-
end
|
25
|
-
io.printf "%6.2f %8.3f %8.3f %8d %8.2f %8.2f %s\n",
|
26
|
-
r.self_time / total * 100,
|
27
|
-
sum,
|
28
|
-
r.self_time,
|
29
|
-
r.count,
|
30
|
-
r.self_time * 1000 / r.count,
|
31
|
-
r.total_time * 1000 / r.count,
|
32
|
-
name
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,102 +0,0 @@
|
|
1
|
-
# Implements the logic behind the rake tasks for annotations like
|
2
|
-
#
|
3
|
-
# rake notes
|
4
|
-
# rake notes:optimize
|
5
|
-
#
|
6
|
-
# and friends. See <tt>rake -T notes</tt> and <tt>railties/lib/tasks/annotations.rake</tt>.
|
7
|
-
#
|
8
|
-
# Annotation objects are triplets <tt>:line</tt>, <tt>:tag</tt>, <tt>:text</tt> that
|
9
|
-
# represent the line where the annotation lives, its tag, and its text. Note
|
10
|
-
# the filename is not stored.
|
11
|
-
#
|
12
|
-
# Annotations are looked for in comments and modulus whitespace they have to
|
13
|
-
# start with the tag optionally followed by a colon. Everything up to the end
|
14
|
-
# of the line (or closing ERb comment tag) is considered to be their text.
|
15
|
-
class SourceAnnotationExtractor
|
16
|
-
class Annotation < Struct.new(:line, :tag, :text)
|
17
|
-
|
18
|
-
# Returns a representation of the annotation that looks like this:
|
19
|
-
#
|
20
|
-
# [126] [TODO] This algorithm is simple and clearly correct, make it faster.
|
21
|
-
#
|
22
|
-
# If +options+ has a flag <tt>:tag</tt> the tag is shown as in the example above.
|
23
|
-
# Otherwise the string contains just line and text.
|
24
|
-
def to_s(options={})
|
25
|
-
s = "[%3d] " % line
|
26
|
-
s << "[#{tag}] " if options[:tag]
|
27
|
-
s << text
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
# Prints all annotations with tag +tag+ under the root directories +app+, +lib+,
|
32
|
-
# and +test+ (recursively). Only filenames with extension +.builder+, +.rb+,
|
33
|
-
# +.rxml+, +.rjs+, +.rhtml+, or +.erb+ are taken into account. The +options+
|
34
|
-
# hash is passed to each annotation's +to_s+.
|
35
|
-
#
|
36
|
-
# This class method is the single entry point for the rake tasks.
|
37
|
-
def self.enumerate(tag, options={})
|
38
|
-
extractor = new(tag)
|
39
|
-
extractor.display(extractor.find, options)
|
40
|
-
end
|
41
|
-
|
42
|
-
attr_reader :tag
|
43
|
-
|
44
|
-
def initialize(tag)
|
45
|
-
@tag = tag
|
46
|
-
end
|
47
|
-
|
48
|
-
# Returns a hash that maps filenames under +dirs+ (recursively) to arrays
|
49
|
-
# with their annotations. Only files with annotations are included, and only
|
50
|
-
# those with extension +.builder+, +.rb+, +.rxml+, +.rjs+, +.rhtml+, and +.erb+
|
51
|
-
# are taken into account.
|
52
|
-
def find(dirs=%w(app lib test))
|
53
|
-
dirs.inject({}) { |h, dir| h.update(find_in(dir)) }
|
54
|
-
end
|
55
|
-
|
56
|
-
# Returns a hash that maps filenames under +dir+ (recursively) to arrays
|
57
|
-
# with their annotations. Only files with annotations are included, and only
|
58
|
-
# those with extension +.builder+, +.rb+, +.rxml+, +.rjs+, +.rhtml+, and +.erb+
|
59
|
-
# are taken into account.
|
60
|
-
def find_in(dir)
|
61
|
-
results = {}
|
62
|
-
|
63
|
-
Dir.glob("#{dir}/*") do |item|
|
64
|
-
next if File.basename(item)[0] == ?.
|
65
|
-
|
66
|
-
if File.directory?(item)
|
67
|
-
results.update(find_in(item))
|
68
|
-
elsif item =~ /\.(builder|(r(?:b|xml|js)))$/
|
69
|
-
results.update(extract_annotations_from(item, /#\s*(#{tag}):?\s*(.*)$/))
|
70
|
-
elsif item =~ /\.(rhtml|erb)$/
|
71
|
-
results.update(extract_annotations_from(item, /<%\s*#\s*(#{tag}):?\s*(.*?)\s*%>/))
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
results
|
76
|
-
end
|
77
|
-
|
78
|
-
# If +file+ is the filename of a file that contains annotations this method returns
|
79
|
-
# a hash with a single entry that maps +file+ to an array of its annotations.
|
80
|
-
# Otherwise it returns an empty hash.
|
81
|
-
def extract_annotations_from(file, pattern)
|
82
|
-
lineno = 0
|
83
|
-
result = File.readlines(file).inject([]) do |list, line|
|
84
|
-
lineno += 1
|
85
|
-
next list unless line =~ pattern
|
86
|
-
list << Annotation.new(lineno, $1, $2)
|
87
|
-
end
|
88
|
-
result.empty? ? {} : { file => result }
|
89
|
-
end
|
90
|
-
|
91
|
-
# Prints the mapping from filenames to annotations in +results+ ordered by filename.
|
92
|
-
# The +options+ hash is passed to each annotation's +to_s+.
|
93
|
-
def display(results, options={})
|
94
|
-
results.keys.sort.each do |file|
|
95
|
-
puts "#{file}:"
|
96
|
-
results[file].each do |note|
|
97
|
-
puts " * #{note.to_s(options)}"
|
98
|
-
end
|
99
|
-
puts
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
data/lib/tasks/annotations.rake
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'source_annotation_extractor'
|
2
|
-
|
3
|
-
desc "Enumerate all annotations"
|
4
|
-
task :notes do
|
5
|
-
SourceAnnotationExtractor.enumerate "OPTIMIZE|FIXME|TODO", :tag => true
|
6
|
-
end
|
7
|
-
|
8
|
-
namespace :notes do
|
9
|
-
["OPTIMIZE", "FIXME", "TODO"].each do |annotation|
|
10
|
-
desc "Enumerate all #{annotation} annotations"
|
11
|
-
task annotation.downcase.intern do
|
12
|
-
SourceAnnotationExtractor.enumerate annotation
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
desc "Enumerate a custom annotation, specify with ANNOTATION=WTFHAX"
|
17
|
-
task :custom do
|
18
|
-
SourceAnnotationExtractor.enumerate ENV['ANNOTATION']
|
19
|
-
end
|
20
|
-
end
|
data/lib/tasks/databases.rake
DELETED
@@ -1,436 +0,0 @@
|
|
1
|
-
namespace :db do
|
2
|
-
task :load_config => :rails_env do
|
3
|
-
require 'active_record'
|
4
|
-
ActiveRecord::Base.configurations = Rails::Configuration.new.database_configuration
|
5
|
-
end
|
6
|
-
|
7
|
-
namespace :create do
|
8
|
-
desc 'Create all the local databases defined in config/database.yml'
|
9
|
-
task :all => :load_config do
|
10
|
-
ActiveRecord::Base.configurations.each_value do |config|
|
11
|
-
# Skip entries that don't have a database key, such as the first entry here:
|
12
|
-
#
|
13
|
-
# defaults: &defaults
|
14
|
-
# adapter: mysql
|
15
|
-
# username: root
|
16
|
-
# password:
|
17
|
-
# host: localhost
|
18
|
-
#
|
19
|
-
# development:
|
20
|
-
# database: blog_development
|
21
|
-
# <<: *defaults
|
22
|
-
next unless config['database']
|
23
|
-
# Only connect to local databases
|
24
|
-
local_database?(config) { create_database(config) }
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
desc 'Create the database defined in config/database.yml for the current RAILS_ENV'
|
30
|
-
task :create => :load_config do
|
31
|
-
create_database(ActiveRecord::Base.configurations[RAILS_ENV])
|
32
|
-
end
|
33
|
-
|
34
|
-
def create_database(config)
|
35
|
-
begin
|
36
|
-
if config['adapter'] =~ /sqlite/
|
37
|
-
if File.exist?(config['database'])
|
38
|
-
$stderr.puts "#{config['database']} already exists"
|
39
|
-
else
|
40
|
-
begin
|
41
|
-
# Create the SQLite database
|
42
|
-
ActiveRecord::Base.establish_connection(config)
|
43
|
-
ActiveRecord::Base.connection
|
44
|
-
rescue
|
45
|
-
$stderr.puts $!, *($!.backtrace)
|
46
|
-
$stderr.puts "Couldn't create database for #{config.inspect}"
|
47
|
-
end
|
48
|
-
end
|
49
|
-
return # Skip the else clause of begin/rescue
|
50
|
-
else
|
51
|
-
ActiveRecord::Base.establish_connection(config)
|
52
|
-
ActiveRecord::Base.connection
|
53
|
-
end
|
54
|
-
rescue
|
55
|
-
case config['adapter']
|
56
|
-
when /^mysql/
|
57
|
-
@charset = ENV['CHARSET'] || 'utf8'
|
58
|
-
@collation = ENV['COLLATION'] || 'utf8_unicode_ci'
|
59
|
-
begin
|
60
|
-
ActiveRecord::Base.establish_connection(config.merge('database' => nil))
|
61
|
-
ActiveRecord::Base.connection.create_database(config['database'], :charset => (config['charset'] || @charset), :collation => (config['collation'] || @collation))
|
62
|
-
ActiveRecord::Base.establish_connection(config)
|
63
|
-
rescue
|
64
|
-
$stderr.puts "Couldn't create database for #{config.inspect}, charset: #{config['charset'] || @charset}, collation: #{config['collation'] || @collation} (if you set the charset manually, make sure you have a matching collation)"
|
65
|
-
end
|
66
|
-
when 'postgresql'
|
67
|
-
@encoding = config[:encoding] || ENV['CHARSET'] || 'utf8'
|
68
|
-
begin
|
69
|
-
ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres', 'schema_search_path' => 'public'))
|
70
|
-
ActiveRecord::Base.connection.create_database(config['database'], config.merge('encoding' => @encoding))
|
71
|
-
ActiveRecord::Base.establish_connection(config)
|
72
|
-
rescue
|
73
|
-
$stderr.puts $!, *($!.backtrace)
|
74
|
-
$stderr.puts "Couldn't create database for #{config.inspect}"
|
75
|
-
end
|
76
|
-
end
|
77
|
-
else
|
78
|
-
$stderr.puts "#{config['database']} already exists"
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
namespace :drop do
|
83
|
-
desc 'Drops all the local databases defined in config/database.yml'
|
84
|
-
task :all => :load_config do
|
85
|
-
ActiveRecord::Base.configurations.each_value do |config|
|
86
|
-
# Skip entries that don't have a database key
|
87
|
-
next unless config['database']
|
88
|
-
# Only connect to local databases
|
89
|
-
local_database?(config) { drop_database(config) }
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
desc 'Drops the database for the current RAILS_ENV'
|
95
|
-
task :drop => :load_config do
|
96
|
-
config = ActiveRecord::Base.configurations[RAILS_ENV || 'development']
|
97
|
-
drop_database(config)
|
98
|
-
end
|
99
|
-
|
100
|
-
def local_database?(config, &block)
|
101
|
-
if %w( 127.0.0.1 localhost ).include?(config['host']) || config['host'].blank?
|
102
|
-
yield
|
103
|
-
else
|
104
|
-
puts "This task only modifies local databases. #{config['database']} is on a remote host."
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
|
109
|
-
desc "Migrate the database through scripts in db/migrate and update db/schema.rb by invoking db:schema:dump. Target specific version with VERSION=x. Turn off output with VERBOSE=false."
|
110
|
-
task :migrate => :environment do
|
111
|
-
ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
|
112
|
-
ActiveRecord::Migrator.migrate("db/migrate/", ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
|
113
|
-
Rake::Task["db:schema:dump"].invoke if ActiveRecord::Base.schema_format == :ruby
|
114
|
-
end
|
115
|
-
|
116
|
-
namespace :migrate do
|
117
|
-
desc 'Rollbacks the database one migration and re migrate up. If you want to rollback more than one step, define STEP=x. Target specific version with VERSION=x.'
|
118
|
-
task :redo => :environment do
|
119
|
-
if ENV["VERSION"]
|
120
|
-
Rake::Task["db:migrate:down"].invoke
|
121
|
-
Rake::Task["db:migrate:up"].invoke
|
122
|
-
else
|
123
|
-
Rake::Task["db:rollback"].invoke
|
124
|
-
Rake::Task["db:migrate"].invoke
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
desc 'Resets your database using your migrations for the current environment'
|
129
|
-
task :reset => ["db:drop", "db:create", "db:migrate"]
|
130
|
-
|
131
|
-
desc 'Runs the "up" for a given migration VERSION.'
|
132
|
-
task :up => :environment do
|
133
|
-
version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
|
134
|
-
raise "VERSION is required" unless version
|
135
|
-
ActiveRecord::Migrator.run(:up, "db/migrate/", version)
|
136
|
-
Rake::Task["db:schema:dump"].invoke if ActiveRecord::Base.schema_format == :ruby
|
137
|
-
end
|
138
|
-
|
139
|
-
desc 'Runs the "down" for a given migration VERSION.'
|
140
|
-
task :down => :environment do
|
141
|
-
version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
|
142
|
-
raise "VERSION is required" unless version
|
143
|
-
ActiveRecord::Migrator.run(:down, "db/migrate/", version)
|
144
|
-
Rake::Task["db:schema:dump"].invoke if ActiveRecord::Base.schema_format == :ruby
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
desc 'Rolls the schema back to the previous version. Specify the number of steps with STEP=n'
|
149
|
-
task :rollback => :environment do
|
150
|
-
step = ENV['STEP'] ? ENV['STEP'].to_i : 1
|
151
|
-
ActiveRecord::Migrator.rollback('db/migrate/', step)
|
152
|
-
Rake::Task["db:schema:dump"].invoke if ActiveRecord::Base.schema_format == :ruby
|
153
|
-
end
|
154
|
-
|
155
|
-
desc 'Drops and recreates the database from db/schema.rb for the current environment and loads the seeds.'
|
156
|
-
task :reset => [ 'db:drop', 'db:setup' ]
|
157
|
-
|
158
|
-
desc "Retrieves the charset for the current environment's database"
|
159
|
-
task :charset => :environment do
|
160
|
-
config = ActiveRecord::Base.configurations[RAILS_ENV || 'development']
|
161
|
-
case config['adapter']
|
162
|
-
when /^mysql/
|
163
|
-
ActiveRecord::Base.establish_connection(config)
|
164
|
-
puts ActiveRecord::Base.connection.charset
|
165
|
-
when 'postgresql'
|
166
|
-
ActiveRecord::Base.establish_connection(config)
|
167
|
-
puts ActiveRecord::Base.connection.encoding
|
168
|
-
else
|
169
|
-
puts 'sorry, your database adapter is not supported yet, feel free to submit a patch'
|
170
|
-
end
|
171
|
-
end
|
172
|
-
|
173
|
-
desc "Retrieves the collation for the current environment's database"
|
174
|
-
task :collation => :environment do
|
175
|
-
config = ActiveRecord::Base.configurations[RAILS_ENV || 'development']
|
176
|
-
case config['adapter']
|
177
|
-
when /^mysql/
|
178
|
-
ActiveRecord::Base.establish_connection(config)
|
179
|
-
puts ActiveRecord::Base.connection.collation
|
180
|
-
else
|
181
|
-
puts 'sorry, your database adapter is not supported yet, feel free to submit a patch'
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
185
|
-
desc "Retrieves the current schema version number"
|
186
|
-
task :version => :environment do
|
187
|
-
puts "Current version: #{ActiveRecord::Migrator.current_version}"
|
188
|
-
end
|
189
|
-
|
190
|
-
desc "Raises an error if there are pending migrations"
|
191
|
-
task :abort_if_pending_migrations => :environment do
|
192
|
-
if defined? ActiveRecord
|
193
|
-
pending_migrations = ActiveRecord::Migrator.new(:up, 'db/migrate').pending_migrations
|
194
|
-
|
195
|
-
if pending_migrations.any?
|
196
|
-
puts "You have #{pending_migrations.size} pending migrations:"
|
197
|
-
pending_migrations.each do |pending_migration|
|
198
|
-
puts ' %4d %s' % [pending_migration.version, pending_migration.name]
|
199
|
-
end
|
200
|
-
abort %{Run "rake db:migrate" to update your database then try again.}
|
201
|
-
end
|
202
|
-
end
|
203
|
-
end
|
204
|
-
|
205
|
-
desc 'Create the database, load the schema, and initialize with the seed data'
|
206
|
-
task :setup => [ 'db:create', 'db:schema:load', 'db:seed' ]
|
207
|
-
|
208
|
-
desc 'Load the seed data from db/seeds.rb'
|
209
|
-
task :seed => :environment do
|
210
|
-
seed_file = File.join(Rails.root, 'db', 'seeds.rb')
|
211
|
-
load(seed_file) if File.exist?(seed_file)
|
212
|
-
end
|
213
|
-
|
214
|
-
namespace :fixtures do
|
215
|
-
desc "Load fixtures into the current environment's database. Load specific fixtures using FIXTURES=x,y. Load from subdirectory in test/fixtures using FIXTURES_DIR=z. Specify an alternative path (eg. spec/fixtures) using FIXTURES_PATH=spec/fixtures."
|
216
|
-
task :load => :environment do
|
217
|
-
require 'active_record/fixtures'
|
218
|
-
ActiveRecord::Base.establish_connection(Rails.env)
|
219
|
-
base_dir = ENV['FIXTURES_PATH'] ? File.join(Rails.root, ENV['FIXTURES_PATH']) : File.join(Rails.root, 'test', 'fixtures')
|
220
|
-
fixtures_dir = ENV['FIXTURES_DIR'] ? File.join(base_dir, ENV['FIXTURES_DIR']) : base_dir
|
221
|
-
|
222
|
-
(ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/).map {|f| File.join(fixtures_dir, f) } : Dir.glob(File.join(fixtures_dir, '*.{yml,csv}'))).each do |fixture_file|
|
223
|
-
Fixtures.create_fixtures(File.dirname(fixture_file), File.basename(fixture_file, '.*'))
|
224
|
-
end
|
225
|
-
end
|
226
|
-
|
227
|
-
desc "Search for a fixture given a LABEL or ID. Specify an alternative path (eg. spec/fixtures) using FIXTURES_PATH=spec/fixtures."
|
228
|
-
task :identify => :environment do
|
229
|
-
require "active_record/fixtures"
|
230
|
-
|
231
|
-
label, id = ENV["LABEL"], ENV["ID"]
|
232
|
-
raise "LABEL or ID required" if label.blank? && id.blank?
|
233
|
-
|
234
|
-
puts %Q(The fixture ID for "#{label}" is #{Fixtures.identify(label)}.) if label
|
235
|
-
|
236
|
-
base_dir = ENV['FIXTURES_PATH'] ? File.join(Rails.root, ENV['FIXTURES_PATH']) : File.join(Rails.root, 'test', 'fixtures')
|
237
|
-
Dir["#{base_dir}/**/*.yml"].each do |file|
|
238
|
-
if data = YAML::load(ERB.new(IO.read(file)).result)
|
239
|
-
data.keys.each do |key|
|
240
|
-
key_id = Fixtures.identify(key)
|
241
|
-
|
242
|
-
if key == label || key_id == id.to_i
|
243
|
-
puts "#{file}: #{key} (#{key_id})"
|
244
|
-
end
|
245
|
-
end
|
246
|
-
end
|
247
|
-
end
|
248
|
-
end
|
249
|
-
end
|
250
|
-
|
251
|
-
namespace :schema do
|
252
|
-
desc "Create a db/schema.rb file that can be portably used against any DB supported by AR"
|
253
|
-
task :dump => :environment do
|
254
|
-
require 'active_record/schema_dumper'
|
255
|
-
File.open(ENV['SCHEMA'] || "#{RAILS_ROOT}/db/schema.rb", "w") do |file|
|
256
|
-
ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
|
257
|
-
end
|
258
|
-
Rake::Task["db:schema:dump"].reenable
|
259
|
-
end
|
260
|
-
|
261
|
-
desc "Load a schema.rb file into the database"
|
262
|
-
task :load => :environment do
|
263
|
-
file = ENV['SCHEMA'] || "#{RAILS_ROOT}/db/schema.rb"
|
264
|
-
if File.exists?(file)
|
265
|
-
load(file)
|
266
|
-
else
|
267
|
-
abort %{#{file} doesn't exist yet. Run "rake db:migrate" to create it then try again. If you do not intend to use a database, you should instead alter #{RAILS_ROOT}/config/environment.rb to prevent active_record from loading: config.frameworks -= [ :active_record ]}
|
268
|
-
end
|
269
|
-
end
|
270
|
-
end
|
271
|
-
|
272
|
-
namespace :structure do
|
273
|
-
desc "Dump the database structure to a SQL file"
|
274
|
-
task :dump => :environment do
|
275
|
-
abcs = ActiveRecord::Base.configurations
|
276
|
-
case abcs[RAILS_ENV]["adapter"]
|
277
|
-
when /^mysql/, "oci", "oracle"
|
278
|
-
ActiveRecord::Base.establish_connection(abcs[RAILS_ENV])
|
279
|
-
File.open("#{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql", "w+") { |f| f << ActiveRecord::Base.connection.structure_dump }
|
280
|
-
when "postgresql"
|
281
|
-
ENV['PGHOST'] = abcs[RAILS_ENV]["host"] if abcs[RAILS_ENV]["host"]
|
282
|
-
ENV['PGPORT'] = abcs[RAILS_ENV]["port"].to_s if abcs[RAILS_ENV]["port"]
|
283
|
-
ENV['PGPASSWORD'] = abcs[RAILS_ENV]["password"].to_s if abcs[RAILS_ENV]["password"]
|
284
|
-
search_path = abcs[RAILS_ENV]["schema_search_path"]
|
285
|
-
search_path = "--schema=#{search_path}" if search_path
|
286
|
-
`pg_dump -i -U "#{abcs[RAILS_ENV]["username"]}" -s -x -O -f db/#{RAILS_ENV}_structure.sql #{search_path} #{abcs[RAILS_ENV]["database"]}`
|
287
|
-
raise "Error dumping database" if $?.exitstatus == 1
|
288
|
-
when "sqlite", "sqlite3"
|
289
|
-
dbfile = abcs[RAILS_ENV]["database"] || abcs[RAILS_ENV]["dbfile"]
|
290
|
-
`#{abcs[RAILS_ENV]["adapter"]} #{dbfile} .schema > db/#{RAILS_ENV}_structure.sql`
|
291
|
-
when "sqlserver"
|
292
|
-
`scptxfr /s #{abcs[RAILS_ENV]["host"]} /d #{abcs[RAILS_ENV]["database"]} /I /f db\\#{RAILS_ENV}_structure.sql /q /A /r`
|
293
|
-
`scptxfr /s #{abcs[RAILS_ENV]["host"]} /d #{abcs[RAILS_ENV]["database"]} /I /F db\ /q /A /r`
|
294
|
-
when "firebird"
|
295
|
-
set_firebird_env(abcs[RAILS_ENV])
|
296
|
-
db_string = firebird_db_string(abcs[RAILS_ENV])
|
297
|
-
sh "isql -a #{db_string} > #{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql"
|
298
|
-
else
|
299
|
-
raise "Task not supported by '#{abcs["test"]["adapter"]}'"
|
300
|
-
end
|
301
|
-
|
302
|
-
if ActiveRecord::Base.connection.supports_migrations?
|
303
|
-
File.open("#{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql", "a") { |f| f << ActiveRecord::Base.connection.dump_schema_information }
|
304
|
-
end
|
305
|
-
end
|
306
|
-
end
|
307
|
-
|
308
|
-
namespace :test do
|
309
|
-
desc "Recreate the test database from the current schema.rb"
|
310
|
-
task :load => 'db:test:purge' do
|
311
|
-
ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations['test'])
|
312
|
-
ActiveRecord::Schema.verbose = false
|
313
|
-
Rake::Task["db:schema:load"].invoke
|
314
|
-
end
|
315
|
-
|
316
|
-
desc "Recreate the test database from the current environment's database schema"
|
317
|
-
task :clone => %w(db:schema:dump db:test:load)
|
318
|
-
|
319
|
-
desc "Recreate the test databases from the development structure"
|
320
|
-
task :clone_structure => [ "db:structure:dump", "db:test:purge" ] do
|
321
|
-
abcs = ActiveRecord::Base.configurations
|
322
|
-
case abcs["test"]["adapter"]
|
323
|
-
when /^mysql/
|
324
|
-
ActiveRecord::Base.establish_connection(:test)
|
325
|
-
ActiveRecord::Base.connection.execute('SET foreign_key_checks = 0')
|
326
|
-
IO.readlines("#{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql").join.split("\n\n").each do |table|
|
327
|
-
ActiveRecord::Base.connection.execute(table)
|
328
|
-
end
|
329
|
-
when "postgresql"
|
330
|
-
ENV['PGHOST'] = abcs["test"]["host"] if abcs["test"]["host"]
|
331
|
-
ENV['PGPORT'] = abcs["test"]["port"].to_s if abcs["test"]["port"]
|
332
|
-
ENV['PGPASSWORD'] = abcs["test"]["password"].to_s if abcs["test"]["password"]
|
333
|
-
`psql -U "#{abcs["test"]["username"]}" -f #{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql #{abcs["test"]["database"]}`
|
334
|
-
when "sqlite", "sqlite3"
|
335
|
-
dbfile = abcs["test"]["database"] || abcs["test"]["dbfile"]
|
336
|
-
`#{abcs["test"]["adapter"]} #{dbfile} < #{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql`
|
337
|
-
when "sqlserver"
|
338
|
-
`osql -E -S #{abcs["test"]["host"]} -d #{abcs["test"]["database"]} -i db\\#{RAILS_ENV}_structure.sql`
|
339
|
-
when "oci", "oracle"
|
340
|
-
ActiveRecord::Base.establish_connection(:test)
|
341
|
-
IO.readlines("#{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql").join.split(";\n\n").each do |ddl|
|
342
|
-
ActiveRecord::Base.connection.execute(ddl)
|
343
|
-
end
|
344
|
-
when "firebird"
|
345
|
-
set_firebird_env(abcs["test"])
|
346
|
-
db_string = firebird_db_string(abcs["test"])
|
347
|
-
sh "isql -i #{RAILS_ROOT}/db/#{RAILS_ENV}_structure.sql #{db_string}"
|
348
|
-
else
|
349
|
-
raise "Task not supported by '#{abcs["test"]["adapter"]}'"
|
350
|
-
end
|
351
|
-
end
|
352
|
-
|
353
|
-
desc "Empty the test database"
|
354
|
-
task :purge => :environment do
|
355
|
-
abcs = ActiveRecord::Base.configurations
|
356
|
-
case abcs["test"]["adapter"]
|
357
|
-
when /^mysql/
|
358
|
-
ActiveRecord::Base.establish_connection(:test)
|
359
|
-
ActiveRecord::Base.connection.recreate_database(abcs["test"]["database"], abcs["test"])
|
360
|
-
when "postgresql"
|
361
|
-
ActiveRecord::Base.clear_active_connections!
|
362
|
-
drop_database(abcs['test'])
|
363
|
-
create_database(abcs['test'])
|
364
|
-
when "sqlite", "sqlite3"
|
365
|
-
dbfile = abcs["test"]["database"] || abcs["test"]["dbfile"]
|
366
|
-
File.delete(dbfile) if File.exist?(dbfile)
|
367
|
-
when "sqlserver"
|
368
|
-
dropfkscript = "#{abcs["test"]["host"]}.#{abcs["test"]["database"]}.DP1".gsub(/\\/,'-')
|
369
|
-
`osql -E -S #{abcs["test"]["host"]} -d #{abcs["test"]["database"]} -i db\\#{dropfkscript}`
|
370
|
-
`osql -E -S #{abcs["test"]["host"]} -d #{abcs["test"]["database"]} -i db\\#{RAILS_ENV}_structure.sql`
|
371
|
-
when "oci", "oracle"
|
372
|
-
ActiveRecord::Base.establish_connection(:test)
|
373
|
-
ActiveRecord::Base.connection.structure_drop.split(";\n\n").each do |ddl|
|
374
|
-
ActiveRecord::Base.connection.execute(ddl)
|
375
|
-
end
|
376
|
-
when "firebird"
|
377
|
-
ActiveRecord::Base.establish_connection(:test)
|
378
|
-
ActiveRecord::Base.connection.recreate_database!
|
379
|
-
else
|
380
|
-
raise "Task not supported by '#{abcs["test"]["adapter"]}'"
|
381
|
-
end
|
382
|
-
end
|
383
|
-
|
384
|
-
desc 'Check for pending migrations and load the test schema'
|
385
|
-
task :prepare => 'db:abort_if_pending_migrations' do
|
386
|
-
if defined?(ActiveRecord) && !ActiveRecord::Base.configurations.blank?
|
387
|
-
Rake::Task[{ :sql => "db:test:clone_structure", :ruby => "db:test:load" }[ActiveRecord::Base.schema_format]].invoke
|
388
|
-
end
|
389
|
-
end
|
390
|
-
end
|
391
|
-
|
392
|
-
namespace :sessions do
|
393
|
-
desc "Creates a sessions migration for use with ActiveRecord::SessionStore"
|
394
|
-
task :create => :environment do
|
395
|
-
raise "Task unavailable to this database (no migration support)" unless ActiveRecord::Base.connection.supports_migrations?
|
396
|
-
require 'rails_generator'
|
397
|
-
require 'rails_generator/scripts/generate'
|
398
|
-
Rails::Generator::Scripts::Generate.new.run(["session_migration", ENV["MIGRATION"] || "CreateSessions"])
|
399
|
-
end
|
400
|
-
|
401
|
-
desc "Clear the sessions table"
|
402
|
-
task :clear => :environment do
|
403
|
-
ActiveRecord::Base.connection.execute "DELETE FROM #{session_table_name}"
|
404
|
-
end
|
405
|
-
end
|
406
|
-
end
|
407
|
-
|
408
|
-
def drop_database(config)
|
409
|
-
begin
|
410
|
-
case config['adapter']
|
411
|
-
when /^mysql/
|
412
|
-
ActiveRecord::Base.establish_connection(config)
|
413
|
-
ActiveRecord::Base.connection.drop_database config['database']
|
414
|
-
when /^sqlite/
|
415
|
-
FileUtils.rm(File.join(RAILS_ROOT, config['database']))
|
416
|
-
when 'postgresql'
|
417
|
-
ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres', 'schema_search_path' => 'public'))
|
418
|
-
ActiveRecord::Base.connection.drop_database config['database']
|
419
|
-
end
|
420
|
-
rescue Exception => e
|
421
|
-
puts "Couldn't drop #{config['database']} : #{e.inspect}"
|
422
|
-
end
|
423
|
-
end
|
424
|
-
|
425
|
-
def session_table_name
|
426
|
-
ActiveRecord::Base.pluralize_table_names ? :sessions : :session
|
427
|
-
end
|
428
|
-
|
429
|
-
def set_firebird_env(config)
|
430
|
-
ENV["ISC_USER"] = config["username"].to_s if config["username"]
|
431
|
-
ENV["ISC_PASSWORD"] = config["password"].to_s if config["password"]
|
432
|
-
end
|
433
|
-
|
434
|
-
def firebird_db_string(config)
|
435
|
-
FireRuby::Database.db_string_for(config.symbolize_keys)
|
436
|
-
end
|