rails 2.2.2 → 3.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.
- data/bin/rails +8 -18
- metadata +118 -452
- data/CHANGELOG +0 -2071
- data/MIT-LICENSE +0 -20
- data/README +0 -256
- data/Rakefile +0 -411
- 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/performance/request +0 -3
- data/bin/plugin +0 -3
- data/bin/process/inspector +0 -3
- data/bin/process/reaper +0 -3
- data/bin/process/spawner +0 -3
- data/bin/runner +0 -3
- data/bin/server +0 -3
- data/builtin/rails_info/rails/info.rb +0 -125
- 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/config.ru +0 -17
- data/configs/apache.conf +0 -40
- data/configs/databases/frontbase.yml +0 -28
- data/configs/databases/ibm_db.yml +0 -62
- data/configs/databases/mysql.yml +0 -57
- 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/inflections.rb +0 -10
- data/configs/initializers/mime_types.rb +0 -5
- data/configs/initializers/new_rails_defaults.rb +0 -17
- data/configs/lighttpd.conf +0 -54
- data/configs/locales/en.yml +0 -5
- data/configs/routes.rb +0 -43
- data/dispatches/dispatch.fcgi +0 -24
- data/dispatches/dispatch.rb +0 -10
- data/dispatches/gateway.cgi +0 -97
- data/doc/README_FOR_APP +0 -5
- data/doc/guides/html/2_2_release_notes.html +0 -1185
- data/doc/guides/html/actioncontroller_basics.html +0 -1270
- data/doc/guides/html/activerecord_validations_callbacks.html +0 -749
- data/doc/guides/html/association_basics.html +0 -2585
- data/doc/guides/html/authors.html +0 -240
- data/doc/guides/html/benchmarking_and_profiling.html +0 -1018
- data/doc/guides/html/caching_with_rails.html +0 -583
- data/doc/guides/html/command_line.html +0 -434
- data/doc/guides/html/configuring.html +0 -438
- data/doc/guides/html/creating_plugins.html +0 -1594
- data/doc/guides/html/debugging_rails_applications.html +0 -1175
- data/doc/guides/html/finders.html +0 -1090
- data/doc/guides/html/form_helpers.html +0 -638
- data/doc/guides/html/getting_started_with_rails.html +0 -2066
- data/doc/guides/html/index.html +0 -349
- data/doc/guides/html/layouts_and_rendering.html +0 -1406
- data/doc/guides/html/migrations.html +0 -921
- data/doc/guides/html/routing_outside_in.html +0 -2213
- data/doc/guides/html/security.html +0 -1346
- data/doc/guides/html/testing_rails_applications.html +0 -1859
- data/doc/guides/source/2_2_release_notes.txt +0 -435
- data/doc/guides/source/actioncontroller_basics/changelog.txt +0 -5
- data/doc/guides/source/actioncontroller_basics/cookies.txt +0 -34
- data/doc/guides/source/actioncontroller_basics/csrf.txt +0 -32
- data/doc/guides/source/actioncontroller_basics/filters.txt +0 -119
- data/doc/guides/source/actioncontroller_basics/http_auth.txt +0 -24
- data/doc/guides/source/actioncontroller_basics/index.txt +0 -40
- data/doc/guides/source/actioncontroller_basics/introduction.txt +0 -9
- data/doc/guides/source/actioncontroller_basics/methods.txt +0 -39
- data/doc/guides/source/actioncontroller_basics/parameter_filtering.txt +0 -14
- data/doc/guides/source/actioncontroller_basics/params.txt +0 -93
- data/doc/guides/source/actioncontroller_basics/request_response_objects.txt +0 -43
- data/doc/guides/source/actioncontroller_basics/rescue.txt +0 -67
- data/doc/guides/source/actioncontroller_basics/session.txt +0 -187
- data/doc/guides/source/actioncontroller_basics/streaming.txt +0 -91
- data/doc/guides/source/actioncontroller_basics/verification.txt +0 -40
- data/doc/guides/source/active_record_basics.txt +0 -181
- data/doc/guides/source/activerecord_validations_callbacks.txt +0 -404
- data/doc/guides/source/association_basics.txt +0 -1840
- data/doc/guides/source/authors.txt +0 -39
- data/doc/guides/source/benchmarking_and_profiling/appendix.txt +0 -95
- data/doc/guides/source/benchmarking_and_profiling/digging_deeper.txt +0 -105
- data/doc/guides/source/benchmarking_and_profiling/edge_rails_features.txt +0 -185
- data/doc/guides/source/benchmarking_and_profiling/gameplan.txt +0 -27
- data/doc/guides/source/benchmarking_and_profiling/index.txt +0 -242
- data/doc/guides/source/benchmarking_and_profiling/rubyprof.txt +0 -179
- data/doc/guides/source/benchmarking_and_profiling/statistics.txt +0 -57
- data/doc/guides/source/caching_with_rails.txt +0 -367
- data/doc/guides/source/command_line.txt +0 -147
- data/doc/guides/source/configuring.txt +0 -225
- data/doc/guides/source/creating_plugins/acts_as_yaffle.txt +0 -191
- data/doc/guides/source/creating_plugins/appendix.txt +0 -46
- data/doc/guides/source/creating_plugins/controllers.txt +0 -59
- data/doc/guides/source/creating_plugins/core_ext.txt +0 -123
- data/doc/guides/source/creating_plugins/custom_route.txt +0 -69
- data/doc/guides/source/creating_plugins/gem.txt +0 -1
- data/doc/guides/source/creating_plugins/generator_method.txt +0 -89
- data/doc/guides/source/creating_plugins/helpers.txt +0 -51
- data/doc/guides/source/creating_plugins/index.txt +0 -52
- data/doc/guides/source/creating_plugins/migration_generator.txt +0 -156
- data/doc/guides/source/creating_plugins/models.txt +0 -76
- data/doc/guides/source/creating_plugins/odds_and_ends.txt +0 -69
- data/doc/guides/source/creating_plugins/test_setup.txt +0 -230
- data/doc/guides/source/debugging_rails_applications.txt +0 -733
- data/doc/guides/source/finders.txt +0 -668
- data/doc/guides/source/form_helpers.txt +0 -345
- data/doc/guides/source/getting_started_with_rails.txt +0 -1256
- data/doc/guides/source/images/belongs_to.png +0 -0
- data/doc/guides/source/images/bullet.gif +0 -0
- data/doc/guides/source/images/csrf.png +0 -0
- data/doc/guides/source/images/habtm.png +0 -0
- data/doc/guides/source/images/has_many.png +0 -0
- data/doc/guides/source/images/has_many_through.png +0 -0
- data/doc/guides/source/images/has_one.png +0 -0
- data/doc/guides/source/images/has_one_through.png +0 -0
- data/doc/guides/source/images/header_backdrop.png +0 -0
- data/doc/guides/source/images/icons/README +0 -5
- data/doc/guides/source/images/icons/callouts/1.png +0 -0
- data/doc/guides/source/images/icons/callouts/10.png +0 -0
- data/doc/guides/source/images/icons/callouts/11.png +0 -0
- data/doc/guides/source/images/icons/callouts/12.png +0 -0
- data/doc/guides/source/images/icons/callouts/13.png +0 -0
- data/doc/guides/source/images/icons/callouts/14.png +0 -0
- data/doc/guides/source/images/icons/callouts/15.png +0 -0
- data/doc/guides/source/images/icons/callouts/2.png +0 -0
- data/doc/guides/source/images/icons/callouts/3.png +0 -0
- data/doc/guides/source/images/icons/callouts/4.png +0 -0
- data/doc/guides/source/images/icons/callouts/5.png +0 -0
- data/doc/guides/source/images/icons/callouts/6.png +0 -0
- data/doc/guides/source/images/icons/callouts/7.png +0 -0
- data/doc/guides/source/images/icons/callouts/8.png +0 -0
- data/doc/guides/source/images/icons/callouts/9.png +0 -0
- data/doc/guides/source/images/icons/caution.png +0 -0
- data/doc/guides/source/images/icons/example.png +0 -0
- data/doc/guides/source/images/icons/home.png +0 -0
- data/doc/guides/source/images/icons/important.png +0 -0
- data/doc/guides/source/images/icons/next.png +0 -0
- data/doc/guides/source/images/icons/note.png +0 -0
- data/doc/guides/source/images/icons/prev.png +0 -0
- data/doc/guides/source/images/icons/tip.png +0 -0
- data/doc/guides/source/images/icons/up.png +0 -0
- data/doc/guides/source/images/icons/warning.png +0 -0
- data/doc/guides/source/images/polymorphic.png +0 -0
- data/doc/guides/source/images/rails_logo_remix.gif +0 -0
- data/doc/guides/source/images/ruby_on_rails_by_mike_rundle2.gif +0 -0
- data/doc/guides/source/images/session_fixation.png +0 -0
- data/doc/guides/source/index.txt +0 -118
- data/doc/guides/source/layouts_and_rendering.txt +0 -982
- data/doc/guides/source/migrations/anatomy_of_a_migration.txt +0 -85
- data/doc/guides/source/migrations/changelog.txt +0 -5
- data/doc/guides/source/migrations/creating_a_migration.txt +0 -109
- data/doc/guides/source/migrations/foreign_keys.txt +0 -8
- data/doc/guides/source/migrations/index.txt +0 -22
- data/doc/guides/source/migrations/rakeing_around.txt +0 -111
- data/doc/guides/source/migrations/scheming.txt +0 -47
- data/doc/guides/source/migrations/using_models_in_migrations.txt +0 -46
- data/doc/guides/source/migrations/writing_a_migration.txt +0 -159
- data/doc/guides/source/routing_outside_in.txt +0 -986
- data/doc/guides/source/security.txt +0 -984
- data/doc/guides/source/stylesheets/base.css +0 -358
- data/doc/guides/source/stylesheets/forms.css +0 -35
- data/doc/guides/source/stylesheets/more.css +0 -82
- data/doc/guides/source/templates/guides.html.erb +0 -97
- data/doc/guides/source/templates/inline.css +0 -165
- data/doc/guides/source/testing_rails_applications.txt +0 -995
- data/environments/boot.rb +0 -109
- data/environments/development.rb +0 -17
- data/environments/environment.rb +0 -75
- data/environments/production.rb +0 -24
- data/environments/test.rb +0 -22
- data/fresh_rakefile +0 -10
- data/helpers/application.rb +0 -15
- 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 -33
- data/html/favicon.ico +0 -0
- data/html/images/rails.png +0 -0
- data/html/index.html +0 -274
- 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 -67
- 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/performance/request.rb +0 -6
- data/lib/commands/plugin.rb +0 -967
- data/lib/commands/process/inspector.rb +0 -68
- data/lib/commands/process/reaper.rb +0 -149
- data/lib/commands/process/spawner.rb +0 -219
- data/lib/commands/process/spinner.rb +0 -57
- data/lib/commands/runner.rb +0 -48
- data/lib/commands/server.rb +0 -49
- data/lib/commands/servers/base.rb +0 -31
- data/lib/commands/servers/lighttpd.rb +0 -94
- data/lib/commands/servers/mongrel.rb +0 -69
- data/lib/commands/servers/new_mongrel.rb +0 -16
- data/lib/commands/servers/thin.rb +0 -25
- data/lib/commands/servers/webrick.rb +0 -66
- 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 -26
- data/lib/dispatcher.rb +0 -24
- data/lib/fcgi_handler.rb +0 -237
- data/lib/initializer.rb +0 -1038
- data/lib/performance_test_help.rb +0 -5
- data/lib/rails/gem_builder.rb +0 -21
- data/lib/rails/gem_dependency.rb +0 -251
- data/lib/rails/mongrel_server/commands.rb +0 -342
- data/lib/rails/mongrel_server/handler.rb +0 -55
- data/lib/rails/plugin.rb +0 -124
- data/lib/rails/plugin/loader.rb +0 -152
- data/lib/rails/plugin/locator.rb +0 -100
- data/lib/rails/rack.rb +0 -6
- data/lib/rails/rack/logger.rb +0 -28
- data/lib/rails/rack/static.rb +0 -35
- data/lib/rails/vendor_gem_source_index.rb +0 -140
- data/lib/rails/version.rb +0 -9
- data/lib/rails_generator.rb +0 -43
- data/lib/rails_generator/base.rb +0 -263
- data/lib/rails_generator/commands.rb +0 -616
- data/lib/rails_generator/generated_attribute.rb +0 -46
- data/lib/rails_generator/generators/applications/app/USAGE +0 -9
- data/lib/rails_generator/generators/applications/app/app_generator.rb +0 -184
- data/lib/rails_generator/generators/components/controller/USAGE +0 -29
- data/lib/rails_generator/generators/components/controller/controller_generator.rb +0 -37
- 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/view.html.erb +0 -2
- 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/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 -45
- data/lib/rails_generator/generators/components/model/templates/fixtures.yml +0 -19
- 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 -3
- 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 -74
- 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/scaffold/USAGE +0 -29
- data/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +0 -100
- data/lib/rails_generator/generators/components/scaffold/templates/controller.rb +0 -85
- 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/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 -22
- 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 -416
- data/lib/tasks/documentation.rake +0 -95
- data/lib/tasks/framework.rake +0 -118
- data/lib/tasks/gems.rake +0 -80
- data/lib/tasks/log.rake +0 -9
- data/lib/tasks/misc.rake +0 -56
- data/lib/tasks/rails.rb +0 -8
- data/lib/tasks/routes.rake +0 -17
- data/lib/tasks/statistics.rake +0 -18
- data/lib/tasks/testing.rake +0 -139
- data/lib/tasks/tmp.rake +0 -37
- data/lib/test_help.rb +0 -27
- data/lib/webrick_server.rb +0 -156
@@ -1,55 +0,0 @@
|
|
1
|
-
# Copyright (c) 2005 Zed A. Shaw
|
2
|
-
# You can redistribute it and/or modify it under the same terms as Ruby.
|
3
|
-
#
|
4
|
-
# Additional work donated by contributors. See http://mongrel.rubyforge.org/attributions.html
|
5
|
-
# for more information.
|
6
|
-
|
7
|
-
require 'mongrel'
|
8
|
-
require 'cgi'
|
9
|
-
require 'action_controller/dispatcher'
|
10
|
-
|
11
|
-
|
12
|
-
module Rails
|
13
|
-
module MongrelServer
|
14
|
-
# Implements a handler that can run Rails and serve files out of the
|
15
|
-
# Rails application's public directory. This lets you run your Rails
|
16
|
-
# application with Mongrel during development and testing, then use it
|
17
|
-
# also in production behind a server that's better at serving the
|
18
|
-
# static files.
|
19
|
-
#
|
20
|
-
# The RailsHandler takes a mime_map parameter which is a simple suffix=mimetype
|
21
|
-
# mapping that it should add to the list of valid mime types.
|
22
|
-
#
|
23
|
-
# It also supports page caching directly and will try to resolve a request
|
24
|
-
# in the following order:
|
25
|
-
#
|
26
|
-
# * If the requested exact PATH_INFO exists as a file then serve it.
|
27
|
-
# * If it exists at PATH_INFO+".html" exists then serve that.
|
28
|
-
# * Finally, construct a Mongrel::CGIWrapper and run Dispatcher.dispatch to have Rails go.
|
29
|
-
#
|
30
|
-
# This means that if you are using page caching it will actually work with Mongrel
|
31
|
-
# and you should see a decent speed boost (but not as fast as if you use a static
|
32
|
-
# server like Apache or Litespeed).
|
33
|
-
class RailsHandler < Mongrel::HttpHandler
|
34
|
-
# Construct a Mongrel::CGIWrapper and dispatch.
|
35
|
-
def process(request, response)
|
36
|
-
return if response.socket.closed?
|
37
|
-
|
38
|
-
cgi = Mongrel::CGIWrapper.new(request, response)
|
39
|
-
cgi.handler = self
|
40
|
-
# We don't want the output to be really final until we're out of the lock
|
41
|
-
cgi.default_really_final = false
|
42
|
-
|
43
|
-
ActionController::Dispatcher.dispatch(cgi, ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS, response.body)
|
44
|
-
|
45
|
-
# This finalizes the output using the proper HttpResponse way
|
46
|
-
cgi.out("text/html",true) {""}
|
47
|
-
rescue Errno::EPIPE
|
48
|
-
response.socket.close
|
49
|
-
rescue Object => rails_error
|
50
|
-
STDERR.puts "#{Time.now.httpdate}: Error dispatching #{rails_error.inspect}"
|
51
|
-
STDERR.puts rails_error.backtrace.join("\n")
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
data/lib/rails/plugin.rb
DELETED
@@ -1,124 +0,0 @@
|
|
1
|
-
module Rails
|
2
|
-
# The Plugin class should be an object which provides the following methods:
|
3
|
-
#
|
4
|
-
# * +name+ - Used during initialisation to order the plugin (based on name and
|
5
|
-
# the contents of <tt>config.plugins</tt>).
|
6
|
-
# * +valid?+ - Returns true if this plugin can be loaded.
|
7
|
-
# * +load_paths+ - Each path within the returned array will be added to the <tt>$LOAD_PATH</tt>.
|
8
|
-
# * +load+ - Finally 'load' the plugin.
|
9
|
-
#
|
10
|
-
# These methods are expected by the Rails::Plugin::Locator and Rails::Plugin::Loader classes.
|
11
|
-
# The default implementation returns the <tt>lib</tt> directory as its <tt>load_paths</tt>,
|
12
|
-
# and evaluates <tt>init.rb</tt> when <tt>load</tt> is called.
|
13
|
-
#
|
14
|
-
# You can also inspect the about.yml data programmatically:
|
15
|
-
#
|
16
|
-
# plugin = Rails::Plugin.new(path_to_my_plugin)
|
17
|
-
# plugin.about["author"] # => "James Adam"
|
18
|
-
# plugin.about["url"] # => "http://interblah.net"
|
19
|
-
class Plugin
|
20
|
-
include Comparable
|
21
|
-
|
22
|
-
attr_reader :directory, :name
|
23
|
-
|
24
|
-
def initialize(directory)
|
25
|
-
@directory = directory
|
26
|
-
@name = File.basename(@directory) rescue nil
|
27
|
-
@loaded = false
|
28
|
-
end
|
29
|
-
|
30
|
-
def valid?
|
31
|
-
File.directory?(directory) && (has_lib_directory? || has_init_file?)
|
32
|
-
end
|
33
|
-
|
34
|
-
# Returns a list of paths this plugin wishes to make available in <tt>$LOAD_PATH</tt>.
|
35
|
-
def load_paths
|
36
|
-
report_nonexistant_or_empty_plugin! unless valid?
|
37
|
-
has_lib_directory? ? [lib_path] : []
|
38
|
-
end
|
39
|
-
|
40
|
-
# Evaluates a plugin's init.rb file.
|
41
|
-
def load(initializer)
|
42
|
-
return if loaded?
|
43
|
-
report_nonexistant_or_empty_plugin! unless valid?
|
44
|
-
evaluate_init_rb(initializer)
|
45
|
-
@loaded = true
|
46
|
-
end
|
47
|
-
|
48
|
-
def loaded?
|
49
|
-
@loaded
|
50
|
-
end
|
51
|
-
|
52
|
-
def <=>(other_plugin)
|
53
|
-
name <=> other_plugin.name
|
54
|
-
end
|
55
|
-
|
56
|
-
def about
|
57
|
-
@about ||= load_about_information
|
58
|
-
end
|
59
|
-
|
60
|
-
private
|
61
|
-
def load_about_information
|
62
|
-
about_yml_path = File.join(@directory, "about.yml")
|
63
|
-
parsed_yml = File.exist?(about_yml_path) ? YAML.load(File.read(about_yml_path)) : {}
|
64
|
-
parsed_yml || {}
|
65
|
-
rescue Exception
|
66
|
-
{}
|
67
|
-
end
|
68
|
-
|
69
|
-
def report_nonexistant_or_empty_plugin!
|
70
|
-
raise LoadError, "Can not find the plugin named: #{name}"
|
71
|
-
end
|
72
|
-
|
73
|
-
def lib_path
|
74
|
-
File.join(directory, 'lib')
|
75
|
-
end
|
76
|
-
|
77
|
-
def classic_init_path
|
78
|
-
File.join(directory, 'init.rb')
|
79
|
-
end
|
80
|
-
|
81
|
-
def gem_init_path
|
82
|
-
File.join(directory, 'rails', 'init.rb')
|
83
|
-
end
|
84
|
-
|
85
|
-
def init_path
|
86
|
-
File.file?(gem_init_path) ? gem_init_path : classic_init_path
|
87
|
-
end
|
88
|
-
|
89
|
-
def has_lib_directory?
|
90
|
-
File.directory?(lib_path)
|
91
|
-
end
|
92
|
-
|
93
|
-
def has_init_file?
|
94
|
-
File.file?(init_path)
|
95
|
-
end
|
96
|
-
|
97
|
-
def evaluate_init_rb(initializer)
|
98
|
-
if has_init_file?
|
99
|
-
silence_warnings do
|
100
|
-
# Allow plugins to reference the current configuration object
|
101
|
-
config = initializer.configuration
|
102
|
-
|
103
|
-
eval(IO.read(init_path), binding, init_path)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
# This Plugin subclass represents a Gem plugin. Although RubyGems has already
|
110
|
-
# taken care of $LOAD_PATHs, it exposes its load_paths to add them
|
111
|
-
# to Dependencies.load_paths.
|
112
|
-
class GemPlugin < Plugin
|
113
|
-
# Initialize this plugin from a Gem::Specification.
|
114
|
-
def initialize(spec, gem)
|
115
|
-
directory = spec.full_gem_path
|
116
|
-
super(directory)
|
117
|
-
@name = spec.name
|
118
|
-
end
|
119
|
-
|
120
|
-
def init_path
|
121
|
-
File.join(directory, 'rails', 'init.rb')
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
data/lib/rails/plugin/loader.rb
DELETED
@@ -1,152 +0,0 @@
|
|
1
|
-
require "rails/plugin"
|
2
|
-
|
3
|
-
module Rails
|
4
|
-
class Plugin
|
5
|
-
class Loader
|
6
|
-
attr_reader :initializer
|
7
|
-
|
8
|
-
# Creates a new Plugin::Loader instance, associated with the given
|
9
|
-
# Rails::Initializer. This default implementation automatically locates
|
10
|
-
# all plugins, and adds all plugin load paths, when it is created. The plugins
|
11
|
-
# are then fully loaded (init.rb is evaluated) when load_plugins is called.
|
12
|
-
#
|
13
|
-
# It is the loader's responsibility to ensure that only the plugins specified
|
14
|
-
# in the configuration are actually loaded, and that the order defined
|
15
|
-
# is respected.
|
16
|
-
def initialize(initializer)
|
17
|
-
@initializer = initializer
|
18
|
-
end
|
19
|
-
|
20
|
-
# Returns the plugins to be loaded, in the order they should be loaded.
|
21
|
-
def plugins
|
22
|
-
@plugins ||= all_plugins.select { |plugin| should_load?(plugin) }.sort { |p1, p2| order_plugins(p1, p2) }
|
23
|
-
end
|
24
|
-
|
25
|
-
# Returns all the plugins that could be found by the current locators.
|
26
|
-
def all_plugins
|
27
|
-
@all_plugins ||= locate_plugins
|
28
|
-
@all_plugins
|
29
|
-
end
|
30
|
-
|
31
|
-
def load_plugins
|
32
|
-
plugins.each do |plugin|
|
33
|
-
plugin.load(initializer)
|
34
|
-
register_plugin_as_loaded(plugin)
|
35
|
-
end
|
36
|
-
ensure_all_registered_plugins_are_loaded!
|
37
|
-
end
|
38
|
-
|
39
|
-
# Adds the load paths for every plugin into the $LOAD_PATH. Plugin load paths are
|
40
|
-
# added *after* the application's <tt>lib</tt> directory, to ensure that an application
|
41
|
-
# can always override code within a plugin.
|
42
|
-
#
|
43
|
-
# Plugin load paths are also added to Dependencies.load_paths, and Dependencies.load_once_paths.
|
44
|
-
def add_plugin_load_paths
|
45
|
-
plugins.each do |plugin|
|
46
|
-
plugin.load_paths.each do |path|
|
47
|
-
$LOAD_PATH.insert(application_lib_index + 1, path)
|
48
|
-
ActiveSupport::Dependencies.load_paths << path
|
49
|
-
unless Rails.configuration.reload_plugins?
|
50
|
-
ActiveSupport::Dependencies.load_once_paths << path
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
$LOAD_PATH.uniq!
|
55
|
-
end
|
56
|
-
|
57
|
-
protected
|
58
|
-
|
59
|
-
# The locate_plugins method uses each class in config.plugin_locators to
|
60
|
-
# find the set of all plugins available to this Rails application.
|
61
|
-
def locate_plugins
|
62
|
-
configuration.plugin_locators.map { |locator|
|
63
|
-
locator.new(initializer).plugins
|
64
|
-
}.flatten
|
65
|
-
# TODO: sorting based on config.plugins
|
66
|
-
end
|
67
|
-
|
68
|
-
def register_plugin_as_loaded(plugin)
|
69
|
-
initializer.loaded_plugins << plugin
|
70
|
-
end
|
71
|
-
|
72
|
-
def configuration
|
73
|
-
initializer.configuration
|
74
|
-
end
|
75
|
-
|
76
|
-
def should_load?(plugin)
|
77
|
-
# uses Plugin#name and Plugin#valid?
|
78
|
-
enabled?(plugin) && plugin.valid?
|
79
|
-
end
|
80
|
-
|
81
|
-
def order_plugins(plugin_a, plugin_b)
|
82
|
-
if !explicit_plugin_loading_order?
|
83
|
-
plugin_a <=> plugin_b
|
84
|
-
else
|
85
|
-
if !explicitly_enabled?(plugin_a) && !explicitly_enabled?(plugin_b)
|
86
|
-
plugin_a <=> plugin_b
|
87
|
-
else
|
88
|
-
effective_order_of(plugin_a) <=> effective_order_of(plugin_b)
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
def effective_order_of(plugin)
|
94
|
-
if explicitly_enabled?(plugin)
|
95
|
-
registered_plugin_names.index(plugin.name)
|
96
|
-
else
|
97
|
-
registered_plugin_names.index('all')
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
def application_lib_index
|
102
|
-
$LOAD_PATH.index(File.join(RAILS_ROOT, 'lib')) || 0
|
103
|
-
end
|
104
|
-
|
105
|
-
def enabled?(plugin)
|
106
|
-
!explicit_plugin_loading_order? || registered?(plugin)
|
107
|
-
end
|
108
|
-
|
109
|
-
def explicit_plugin_loading_order?
|
110
|
-
!registered_plugin_names.nil?
|
111
|
-
end
|
112
|
-
|
113
|
-
def registered?(plugin)
|
114
|
-
explicit_plugin_loading_order? && registered_plugins_names_plugin?(plugin)
|
115
|
-
end
|
116
|
-
|
117
|
-
def explicitly_enabled?(plugin)
|
118
|
-
!explicit_plugin_loading_order? || explicitly_registered?(plugin)
|
119
|
-
end
|
120
|
-
|
121
|
-
def explicitly_registered?(plugin)
|
122
|
-
explicit_plugin_loading_order? && registered_plugin_names.include?(plugin.name)
|
123
|
-
end
|
124
|
-
|
125
|
-
def registered_plugins_names_plugin?(plugin)
|
126
|
-
registered_plugin_names.include?(plugin.name) || registered_plugin_names.include?('all')
|
127
|
-
end
|
128
|
-
|
129
|
-
# The plugins that have been explicitly listed with config.plugins. If this list is nil
|
130
|
-
# then it means the client does not care which plugins or in what order they are loaded,
|
131
|
-
# so we load all in alphabetical order. If it is an empty array, we load no plugins, if it is
|
132
|
-
# non empty, we load the named plugins in the order specified.
|
133
|
-
def registered_plugin_names
|
134
|
-
configuration.plugins ? configuration.plugins.map(&:to_s) : nil
|
135
|
-
end
|
136
|
-
|
137
|
-
def loaded?(plugin_name)
|
138
|
-
initializer.loaded_plugins.detect { |plugin| plugin.name == plugin_name.to_s }
|
139
|
-
end
|
140
|
-
|
141
|
-
def ensure_all_registered_plugins_are_loaded!
|
142
|
-
if explicit_plugin_loading_order?
|
143
|
-
if configuration.plugins.detect {|plugin| plugin != :all && !loaded?(plugin) }
|
144
|
-
missing_plugins = configuration.plugins - (plugins + [:all])
|
145
|
-
raise LoadError, "Could not locate the following plugins: #{missing_plugins.to_sentence}"
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
end
|
151
|
-
end
|
152
|
-
end
|
data/lib/rails/plugin/locator.rb
DELETED
@@ -1,100 +0,0 @@
|
|
1
|
-
module Rails
|
2
|
-
class Plugin
|
3
|
-
|
4
|
-
# The Plugin::Locator class should be subclasses to provide custom plugin-finding
|
5
|
-
# abilities to Rails (i.e. loading plugins from Gems, etc). Each subclass should implement
|
6
|
-
# the <tt>located_plugins</tt> method, which return an array of Plugin objects that have been found.
|
7
|
-
class Locator
|
8
|
-
include Enumerable
|
9
|
-
|
10
|
-
attr_reader :initializer
|
11
|
-
|
12
|
-
def initialize(initializer)
|
13
|
-
@initializer = initializer
|
14
|
-
end
|
15
|
-
|
16
|
-
# This method should return all the plugins which this Plugin::Locator can find
|
17
|
-
# These will then be used by the current Plugin::Loader, which is responsible for actually
|
18
|
-
# loading the plugins themselves
|
19
|
-
def plugins
|
20
|
-
raise "The `plugins' method must be defined by concrete subclasses of #{self.class}"
|
21
|
-
end
|
22
|
-
|
23
|
-
def each(&block)
|
24
|
-
plugins.each(&block)
|
25
|
-
end
|
26
|
-
|
27
|
-
def plugin_names
|
28
|
-
plugins.map(&:name)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
# The Rails::Plugin::FileSystemLocator will try to locate plugins by examining the directories
|
33
|
-
# the the paths given in configuration.plugin_paths. Any plugins that can be found are returned
|
34
|
-
# in a list.
|
35
|
-
#
|
36
|
-
# The criteria for a valid plugin in this case is found in Rails::Plugin#valid?, although
|
37
|
-
# other subclasses of Rails::Plugin::Locator can of course use different conditions.
|
38
|
-
class FileSystemLocator < Locator
|
39
|
-
|
40
|
-
# Returns all the plugins which can be loaded in the filesystem, under the paths given
|
41
|
-
# by configuration.plugin_paths.
|
42
|
-
def plugins
|
43
|
-
initializer.configuration.plugin_paths.flatten.inject([]) do |plugins, path|
|
44
|
-
plugins.concat locate_plugins_under(path)
|
45
|
-
plugins
|
46
|
-
end.flatten
|
47
|
-
end
|
48
|
-
|
49
|
-
private
|
50
|
-
|
51
|
-
# Attempts to create a plugin from the given path. If the created plugin is valid?
|
52
|
-
# (see Rails::Plugin#valid?) then the plugin instance is returned; otherwise nil.
|
53
|
-
def create_plugin(path)
|
54
|
-
plugin = Rails::Plugin.new(path)
|
55
|
-
plugin.valid? ? plugin : nil
|
56
|
-
end
|
57
|
-
|
58
|
-
# This starts at the base path looking for valid plugins (see Rails::Plugin#valid?).
|
59
|
-
# Since plugins can be nested arbitrarily deep within an unspecified number of intermediary
|
60
|
-
# directories, this method runs recursively until it finds a plugin directory, e.g.
|
61
|
-
#
|
62
|
-
# locate_plugins_under('vendor/plugins/acts/acts_as_chunky_bacon')
|
63
|
-
# => <Rails::Plugin name: 'acts_as_chunky_bacon' ... >
|
64
|
-
#
|
65
|
-
def locate_plugins_under(base_path)
|
66
|
-
Dir.glob(File.join(base_path, '*')).sort.inject([]) do |plugins, path|
|
67
|
-
if plugin = create_plugin(path)
|
68
|
-
plugins << plugin
|
69
|
-
elsif File.directory?(path)
|
70
|
-
plugins.concat locate_plugins_under(path)
|
71
|
-
end
|
72
|
-
plugins
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
# The GemLocator scans all the loaded RubyGems, looking for gems with
|
78
|
-
# a <tt>rails/init.rb</tt> file.
|
79
|
-
class GemLocator < Locator
|
80
|
-
def plugins
|
81
|
-
gem_index = initializer.configuration.gems.inject({}) { |memo, gem| memo.update gem.specification => gem }
|
82
|
-
specs = gem_index.keys
|
83
|
-
specs += Gem.loaded_specs.values.select do |spec|
|
84
|
-
spec.loaded_from && # prune stubs
|
85
|
-
File.exist?(File.join(spec.full_gem_path, "rails", "init.rb"))
|
86
|
-
end
|
87
|
-
specs.compact!
|
88
|
-
|
89
|
-
require "rubygems/dependency_list"
|
90
|
-
|
91
|
-
deps = Gem::DependencyList.new
|
92
|
-
deps.add(*specs) unless specs.empty?
|
93
|
-
|
94
|
-
deps.dependency_order.collect do |spec|
|
95
|
-
Rails::GemPlugin.new(spec, gem_index[spec])
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
data/lib/rails/rack.rb
DELETED
data/lib/rails/rack/logger.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
module Rails
|
2
|
-
module Rack
|
3
|
-
class Logger
|
4
|
-
EnvironmentLog = "#{File.expand_path(Rails.root)}/log/#{Rails.env}.log"
|
5
|
-
|
6
|
-
def initialize(app, log = nil)
|
7
|
-
@app = app
|
8
|
-
@path = Pathname.new(log || EnvironmentLog).cleanpath
|
9
|
-
@cursor = ::File.size(@path)
|
10
|
-
@last_checked = Time.now
|
11
|
-
end
|
12
|
-
|
13
|
-
def call(env)
|
14
|
-
response = @app.call(env)
|
15
|
-
::File.open(@path, 'r') do |f|
|
16
|
-
f.seek @cursor
|
17
|
-
if f.mtime > @last_checked
|
18
|
-
contents = f.read
|
19
|
-
@last_checked = f.mtime
|
20
|
-
@cursor += contents.length
|
21
|
-
print contents
|
22
|
-
end
|
23
|
-
end
|
24
|
-
response
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|