railties 3.0.0.beta → 3.0.0.beta2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +15 -1
- data/README +9 -9
- data/bin/rails +28 -9
- data/guides/images/challenge.png +0 -0
- data/guides/images/edge_badge.png +0 -0
- data/guides/images/posts_index.png +0 -0
- data/guides/images/rails_welcome.png +0 -0
- data/guides/rails_guides.rb +9 -22
- data/guides/rails_guides/generator.rb +79 -50
- data/guides/rails_guides/textile_extensions.rb +3 -3
- data/guides/source/2_2_release_notes.textile +1 -1
- data/guides/source/2_3_release_notes.textile +1 -1
- data/guides/source/3_0_release_notes.textile +46 -38
- data/guides/source/action_controller_overview.textile +2 -2
- data/guides/source/action_mailer_basics.textile +4 -4
- data/guides/source/action_view_overview.textile +2 -2
- data/guides/source/active_record_querying.textile +73 -95
- data/guides/source/active_support_core_extensions.textile +993 -85
- data/guides/source/activerecord_validations_callbacks.textile +3 -3
- data/guides/source/caching_with_rails.textile +1 -1
- data/guides/source/command_line.textile +90 -88
- data/guides/source/configuring.textile +10 -10
- data/guides/source/contribute.textile +2 -2
- data/guides/source/contributing_to_rails.textile +14 -7
- data/guides/source/credits.textile.erb +8 -0
- data/guides/source/debugging_rails_applications.textile +6 -6
- data/guides/source/form_helpers.textile +1 -1
- data/guides/source/generators.textile +14 -14
- data/guides/source/getting_started.textile +634 -500
- data/guides/source/index.textile.erb +16 -1
- data/guides/source/layout.html.erb +7 -1
- data/guides/source/layouts_and_rendering.textile +299 -71
- data/guides/source/migrations.textile +5 -5
- data/guides/source/performance_testing.textile +8 -8
- data/guides/source/plugins.textile +26 -24
- data/guides/source/rails_on_rack.textile +5 -5
- data/guides/source/routing.textile +119 -117
- data/guides/source/security.textile +1 -1
- data/guides/source/testing.textile +4 -4
- data/lib/rails.rb +4 -1
- data/lib/rails/application.rb +44 -7
- data/lib/rails/application/bootstrap.rb +2 -14
- data/lib/rails/application/configuration.rb +69 -5
- data/lib/rails/application/finisher.rb +2 -3
- data/lib/rails/application/metal_loader.rb +1 -1
- data/lib/rails/application/routes_reloader.rb +1 -1
- data/lib/rails/backtrace_cleaner.rb +0 -11
- data/lib/rails/commands.rb +7 -6
- data/lib/rails/commands/application.rb +1 -1
- data/lib/rails/commands/console.rb +1 -1
- data/lib/rails/commands/dbconsole.rb +12 -0
- data/lib/rails/commands/destroy.rb +2 -2
- data/lib/rails/commands/generate.rb +2 -2
- data/lib/rails/commands/performance/benchmarker.rb +2 -2
- data/lib/rails/commands/performance/profiler.rb +2 -2
- data/lib/rails/commands/plugin.rb +6 -6
- data/lib/rails/commands/runner.rb +2 -0
- data/lib/rails/commands/server.rb +23 -8
- data/lib/rails/configuration.rb +2 -84
- data/lib/rails/console/app.rb +4 -3
- data/lib/rails/console/helpers.rb +3 -1
- data/lib/rails/engine.rb +107 -12
- data/lib/rails/engine/configuration.rb +8 -2
- data/lib/rails/generators.rb +22 -7
- data/lib/rails/generators/actions.rb +16 -6
- data/lib/rails/generators/base.rb +15 -8
- data/lib/rails/generators/erb.rb +21 -0
- data/lib/{generators → rails/generators}/erb/controller/controller_generator.rb +4 -5
- data/lib/{generators → rails/generators}/erb/controller/templates/view.html.erb +0 -0
- data/lib/rails/generators/erb/mailer/mailer_generator.rb +13 -0
- data/lib/{generators → rails/generators}/erb/mailer/templates/view.text.erb +0 -0
- data/lib/{generators → rails/generators}/erb/scaffold/scaffold_generator.rb +14 -26
- data/lib/{generators → rails/generators}/erb/scaffold/templates/_form.html.erb +1 -1
- data/lib/{generators → rails/generators}/erb/scaffold/templates/edit.html.erb +0 -0
- data/lib/{generators → rails/generators}/erb/scaffold/templates/index.html.erb +1 -1
- data/lib/{generators → rails/generators}/erb/scaffold/templates/layout.html.erb +1 -0
- data/lib/{generators → rails/generators}/erb/scaffold/templates/new.html.erb +0 -0
- data/lib/{generators → rails/generators}/erb/scaffold/templates/show.html.erb +0 -0
- data/lib/rails/generators/named_base.rb +4 -0
- data/lib/{generators → rails/generators}/rails/app/USAGE +0 -0
- data/lib/{generators → rails/generators}/rails/app/app_generator.rb +21 -7
- data/lib/rails/generators/rails/app/templates/Gemfile +34 -0
- data/lib/{generators → rails/generators}/rails/app/templates/README +9 -8
- data/lib/{generators → rails/generators}/rails/app/templates/Rakefile +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/app/controllers/application_controller.rb +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/app/helpers/application_helper.rb +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/app/models/.empty_directory +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/app/views/layouts/.empty_directory +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/config.ru +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/config/application.rb +4 -3
- data/lib/rails/generators/rails/app/templates/config/boot.rb +14 -0
- data/lib/{generators → rails/generators}/rails/app/templates/config/databases/frontbase.yml +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/config/databases/ibm_db.yml +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/config/databases/mysql.yml +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/config/databases/oracle.yml +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/config/databases/postgresql.yml +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/config/databases/sqlite3.yml +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/config/environment.rb +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/config/environments/development.rb.tt +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/config/environments/production.rb.tt +9 -0
- data/lib/{generators → rails/generators}/rails/app/templates/config/environments/test.rb.tt +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/config/initializers/backtrace_silencers.rb +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/config/initializers/cookie_verification_secret.rb.tt +1 -1
- data/lib/{generators → rails/generators}/rails/app/templates/config/initializers/inflections.rb +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/config/initializers/mime_types.rb +0 -0
- data/lib/rails/generators/rails/app/templates/config/initializers/session_store.rb.tt +10 -0
- data/lib/{generators → rails/generators}/rails/app/templates/config/locales/en.yml +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/config/routes.rb +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/db/seeds.rb +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/doc/README_FOR_APP +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/gitignore +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/public/404.html +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/public/422.html +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/public/500.html +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/public/favicon.ico +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/public/images/rails.png +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/public/index.html +17 -17
- data/lib/{generators → rails/generators}/rails/app/templates/public/javascripts/application.js +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/public/javascripts/controls.js +5 -3
- data/lib/{generators → rails/generators}/rails/app/templates/public/javascripts/dragdrop.js +7 -6
- data/lib/{generators → rails/generators}/rails/app/templates/public/javascripts/effects.js +8 -13
- data/lib/{generators → rails/generators}/rails/app/templates/public/javascripts/prototype.js +1573 -1019
- data/lib/{generators → rails/generators}/rails/app/templates/public/javascripts/rails.js +1 -2
- data/lib/{generators → rails/generators}/rails/app/templates/public/robots.txt +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/public/stylesheets/.empty_directory +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/script/rails +0 -1
- data/lib/{generators → rails/generators}/rails/app/templates/test/fixtures/.empty_directory +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/test/functional/.empty_directory +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/test/integration/.empty_directory +0 -0
- data/lib/{generators → rails/generators}/rails/app/templates/test/performance/browsing_test.rb +1 -1
- data/lib/{generators → rails/generators}/rails/app/templates/test/test_helper.rb +1 -1
- data/lib/{generators → rails/generators}/rails/app/templates/test/unit/.empty_directory +0 -0
- data/lib/{generators → rails/generators}/rails/controller/USAGE +1 -1
- data/lib/{generators → rails/generators}/rails/controller/controller_generator.rb +6 -0
- data/lib/{generators → rails/generators}/rails/controller/templates/controller.rb +0 -0
- data/lib/{generators → rails/generators}/rails/generator/USAGE +1 -1
- data/lib/{generators → rails/generators}/rails/generator/generator_generator.rb +0 -0
- data/lib/{generators → rails/generators}/rails/generator/templates/%file_name%_generator.rb.tt +0 -0
- data/lib/{generators → rails/generators}/rails/generator/templates/USAGE.tt +1 -1
- data/lib/{generators → rails/generators}/rails/generator/templates/templates/.empty_directory +0 -0
- data/lib/{generators → rails/generators}/rails/helper/USAGE +1 -1
- data/lib/{generators → rails/generators}/rails/helper/helper_generator.rb +0 -0
- data/lib/{generators → rails/generators}/rails/helper/templates/helper.rb +0 -0
- data/lib/{generators → rails/generators}/rails/integration_test/USAGE +1 -1
- data/lib/{generators → rails/generators}/rails/integration_test/integration_test_generator.rb +0 -0
- data/lib/{generators → rails/generators}/rails/mailer/USAGE +1 -1
- data/lib/{generators → rails/generators}/rails/mailer/mailer_generator.rb +0 -0
- data/lib/{generators → rails/generators}/rails/mailer/templates/mailer.rb +0 -0
- data/lib/{generators → rails/generators}/rails/metal/USAGE +1 -1
- data/lib/{generators → rails/generators}/rails/metal/metal_generator.rb +0 -0
- data/lib/{generators → rails/generators}/rails/metal/templates/metal.rb +0 -0
- data/lib/{generators → rails/generators}/rails/migration/USAGE +2 -2
- data/lib/{generators → rails/generators}/rails/migration/migration_generator.rb +0 -0
- data/lib/{generators → rails/generators}/rails/model/USAGE +2 -2
- data/lib/{generators → rails/generators}/rails/model/model_generator.rb +0 -0
- data/lib/{generators → rails/generators}/rails/observer/USAGE +1 -1
- data/lib/{generators → rails/generators}/rails/observer/observer_generator.rb +0 -0
- data/lib/{generators → rails/generators}/rails/performance_test/USAGE +1 -1
- data/lib/{generators → rails/generators}/rails/performance_test/performance_test_generator.rb +0 -0
- data/lib/{generators → rails/generators}/rails/plugin/USAGE +1 -1
- data/lib/{generators → rails/generators}/rails/plugin/plugin_generator.rb +1 -1
- data/lib/{generators → rails/generators}/rails/plugin/templates/MIT-LICENSE.tt +0 -0
- data/lib/{generators → rails/generators}/rails/plugin/templates/README.tt +0 -0
- data/lib/rails/generators/rails/plugin/templates/Rakefile.tt +23 -0
- data/lib/{generators → rails/generators}/rails/plugin/templates/init.rb +0 -0
- data/lib/{generators → rails/generators}/rails/plugin/templates/install.rb +0 -0
- data/lib/{generators → rails/generators}/rails/plugin/templates/lib/%file_name%.rb.tt +0 -0
- data/lib/{generators → rails/generators}/rails/plugin/templates/lib/tasks/%file_name%_tasks.rake.tt +0 -0
- data/lib/{generators → rails/generators}/rails/plugin/templates/uninstall.rb +0 -0
- data/lib/{generators → rails/generators}/rails/resource/USAGE +3 -3
- data/lib/{generators → rails/generators}/rails/resource/resource_generator.rb +3 -1
- data/lib/{generators → rails/generators}/rails/scaffold/USAGE +4 -4
- data/lib/{generators → rails/generators}/rails/scaffold/scaffold_generator.rb +1 -1
- data/lib/{generators → rails/generators}/rails/scaffold_controller/USAGE +1 -1
- data/lib/{generators → rails/generators}/rails/scaffold_controller/scaffold_controller_generator.rb +0 -0
- data/lib/{generators → rails/generators}/rails/scaffold_controller/templates/controller.rb +2 -2
- data/lib/{generators → rails/generators}/rails/session_migration/USAGE +1 -1
- data/lib/{generators → rails/generators}/rails/session_migration/session_migration_generator.rb +0 -0
- data/lib/{generators → rails/generators}/rails/stylesheets/USAGE +1 -1
- data/lib/{generators → rails/generators}/rails/stylesheets/stylesheets_generator.rb +0 -0
- data/lib/{generators → rails/generators}/rails/stylesheets/templates/scaffold.css +4 -0
- data/lib/{generators → rails/generators}/test_unit.rb +0 -0
- data/lib/{generators → rails/generators}/test_unit/controller/controller_generator.rb +2 -1
- data/lib/rails/generators/test_unit/controller/templates/functional_test.rb +18 -0
- data/lib/{generators → rails/generators}/test_unit/helper/helper_generator.rb +1 -1
- data/lib/{generators → rails/generators}/test_unit/helper/templates/helper_test.rb +0 -0
- data/lib/{generators → rails/generators}/test_unit/integration/integration_generator.rb +1 -1
- data/lib/{generators → rails/generators}/test_unit/integration/templates/integration_test.rb +0 -0
- data/lib/{generators → rails/generators}/test_unit/mailer/mailer_generator.rb +1 -8
- data/lib/rails/generators/test_unit/mailer/templates/functional_test.rb +20 -0
- data/lib/{generators → rails/generators}/test_unit/model/model_generator.rb +1 -1
- data/lib/{generators → rails/generators}/test_unit/model/templates/fixtures.yml +0 -0
- data/lib/{generators → rails/generators}/test_unit/model/templates/unit_test.rb +0 -0
- data/lib/{generators → rails/generators}/test_unit/observer/observer_generator.rb +1 -1
- data/lib/{generators → rails/generators}/test_unit/observer/templates/unit_test.rb +0 -0
- data/lib/{generators → rails/generators}/test_unit/performance/performance_generator.rb +1 -1
- data/lib/{generators → rails/generators}/test_unit/performance/templates/performance_test.rb +0 -0
- data/lib/{generators → rails/generators}/test_unit/plugin/plugin_generator.rb +1 -1
- data/lib/{generators → rails/generators}/test_unit/plugin/templates/%file_name%_test.rb.tt +0 -0
- data/lib/{generators → rails/generators}/test_unit/plugin/templates/test_helper.rb +0 -0
- data/lib/{generators → rails/generators}/test_unit/scaffold/scaffold_generator.rb +1 -1
- data/lib/{generators → rails/generators}/test_unit/scaffold/templates/functional_test.rb +9 -5
- data/{builtin/rails_info → lib}/rails/info.rb +0 -0
- data/{builtin/rails_info → lib}/rails/info_controller.rb +0 -0
- data/{builtin/routes.rb → lib/rails/info_routes.rb} +2 -2
- data/lib/rails/{subscriber.rb → log_subscriber.rb} +27 -27
- data/lib/rails/{subscriber → log_subscriber}/test_helper.rb +15 -16
- data/lib/rails/plugin.rb +31 -8
- data/lib/rails/rack/debugger.rb +3 -1
- data/lib/rails/rack/logger.rb +4 -4
- data/lib/rails/railtie.rb +179 -16
- data/lib/rails/railtie/configuration.rb +56 -1
- data/lib/rails/tasks/documentation.rake +38 -20
- data/lib/rails/tasks/framework.rake +16 -9
- data/lib/rails/tasks/misc.rake +3 -5
- data/lib/rails/tasks/routes.rake +2 -2
- data/lib/rails/test_help.rb +21 -1
- data/lib/rails/test_unit/railtie.rb +1 -3
- data/lib/rails/version.rb +3 -2
- metadata +199 -171
- data/builtin/rails_info/rails/info_helper.rb +0 -2
- data/lib/generators/erb.rb +0 -8
- data/lib/generators/erb/mailer/mailer_generator.rb +0 -20
- data/lib/generators/rails/app/templates/Gemfile +0 -34
- data/lib/generators/rails/app/templates/config/boot.rb +0 -17
- data/lib/generators/rails/app/templates/config/initializers/session_store.rb.tt +0 -15
- data/lib/generators/rails/model_subclass/model_subclass_generator.rb +0 -12
- data/lib/generators/rails/plugin/templates/Rakefile.tt +0 -10
- data/lib/generators/test_unit/controller/templates/functional_test.rb +0 -8
- data/lib/generators/test_unit/mailer/templates/fixture +0 -3
- data/lib/generators/test_unit/mailer/templates/functional_test.rb +0 -22
- data/lib/rails/railties_path.rb +0 -1
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# Installing plugins:
|
4
4
|
#
|
5
|
-
# $
|
5
|
+
# $ rails plugin install continuous_builder asset_timestamping
|
6
6
|
#
|
7
7
|
# Specifying revisions:
|
8
8
|
#
|
@@ -319,13 +319,13 @@ module Commands
|
|
319
319
|
o.separator ""
|
320
320
|
o.separator "EXAMPLES"
|
321
321
|
o.separator " Install a plugin:"
|
322
|
-
o.separator " #{@script_name} install continuous_builder\n"
|
322
|
+
o.separator " #{@script_name} plugin install continuous_builder\n"
|
323
323
|
o.separator " Install a plugin from a subversion URL:"
|
324
|
-
o.separator " #{@script_name} install http://dev.rubyonrails.com/svn/rails/plugins/continuous_builder\n"
|
324
|
+
o.separator " #{@script_name} plugin install http://dev.rubyonrails.com/svn/rails/plugins/continuous_builder\n"
|
325
325
|
o.separator " Install a plugin from a git URL:"
|
326
|
-
o.separator " #{@script_name} install git://github.com/SomeGuy/my_awesome_plugin.git\n"
|
326
|
+
o.separator " #{@script_name} plugin install git://github.com/SomeGuy/my_awesome_plugin.git\n"
|
327
327
|
o.separator " Install a plugin and add a svn:externals entry to vendor/plugins"
|
328
|
-
o.separator " #{@script_name} install -x continuous_builder\n"
|
328
|
+
o.separator " #{@script_name} plugin install -x continuous_builder\n"
|
329
329
|
end
|
330
330
|
end
|
331
331
|
|
@@ -381,7 +381,7 @@ module Commands
|
|
381
381
|
"Exports the plugin, allowing you to check it into your local repository. Does not enable updates, or add an svn:externals entry.") { |v| @method = :export }
|
382
382
|
o.on( "-q", "--quiet",
|
383
383
|
"Suppresses the output from installation.",
|
384
|
-
"Ignored if -v is passed (
|
384
|
+
"Ignored if -v is passed (rails plugin -v install ...)") { |v| @options[:quiet] = true }
|
385
385
|
o.on( "-r REVISION", "--revision REVISION",
|
386
386
|
"Checks out the given revision from subversion or git.",
|
387
387
|
"Ignored if subversion/git is not used.") { |v| @options[:revision] = v }
|
@@ -6,20 +6,21 @@ module Rails
|
|
6
6
|
class Server < ::Rack::Server
|
7
7
|
class Options
|
8
8
|
def parse!(args)
|
9
|
-
options = {}
|
10
|
-
|
9
|
+
args, options = args.dup, {}
|
10
|
+
|
11
11
|
opt_parser = OptionParser.new do |opts|
|
12
|
+
opts.banner = "Usage: rails server [options]"
|
12
13
|
opts.on("-p", "--port=port", Integer,
|
13
|
-
"Runs Rails on the specified port.", "Default:
|
14
|
+
"Runs Rails on the specified port.", "Default: 3000") { |v| options[:Port] = v }
|
14
15
|
opts.on("-b", "--binding=ip", String,
|
15
|
-
"Binds Rails to the specified ip.", "Default:
|
16
|
+
"Binds Rails to the specified ip.", "Default: 0.0.0.0") { |v| options[:Host] = v }
|
16
17
|
opts.on("-c", "--config=file", String,
|
17
18
|
"Use custom rackup configuration file") { |v| options[:config] = v }
|
18
19
|
opts.on("-d", "--daemon", "Make server run as a Daemon.") { options[:daemonize] = true }
|
19
20
|
opts.on("-u", "--debugger", "Enable ruby-debugging for the server.") { options[:debugger] = true }
|
20
21
|
opts.on("-e", "--environment=name", String,
|
21
22
|
"Specifies the environment to run this server under (test/development/production).",
|
22
|
-
"Default:
|
23
|
+
"Default: development") { |v| options[:environment] = v }
|
23
24
|
|
24
25
|
opts.separator ""
|
25
26
|
|
@@ -33,22 +34,36 @@ module Rails
|
|
33
34
|
end
|
34
35
|
end
|
35
36
|
|
37
|
+
def initialize(*)
|
38
|
+
super
|
39
|
+
set_environment
|
40
|
+
end
|
41
|
+
|
36
42
|
def opt_parser
|
37
43
|
Options.new
|
38
44
|
end
|
39
45
|
|
40
|
-
def
|
41
|
-
ENV["RAILS_ENV"]
|
46
|
+
def set_environment
|
47
|
+
ENV["RAILS_ENV"] ||= options[:environment]
|
48
|
+
end
|
42
49
|
|
50
|
+
def start
|
43
51
|
puts "=> Booting #{ActiveSupport::Inflector.demodulize(server)}"
|
44
52
|
puts "=> Rails #{Rails.version} application starting in #{Rails.env} on http://#{options[:Host]}:#{options[:Port]}"
|
45
53
|
puts "=> Call with -d to detach" unless options[:daemonize]
|
46
54
|
trap(:INT) { exit }
|
47
55
|
puts "=> Ctrl-C to shutdown server" unless options[:daemonize]
|
48
56
|
|
57
|
+
#Create required tmp directories if not found
|
58
|
+
%w(cache pids sessions sockets).each do |dir_to_make|
|
59
|
+
FileUtils.mkdir_p(Rails.root.join('tmp', dir_to_make))
|
60
|
+
end
|
61
|
+
|
49
62
|
super
|
50
63
|
ensure
|
51
|
-
|
64
|
+
# The '-h' option calls exit before @options is set.
|
65
|
+
# If we call 'options' with it unset, we get double help banners.
|
66
|
+
puts 'Exiting' unless @options && options[:daemonize]
|
52
67
|
end
|
53
68
|
|
54
69
|
def middleware
|
data/lib/rails/configuration.rb
CHANGED
@@ -4,96 +4,14 @@ require 'rails/rack'
|
|
4
4
|
|
5
5
|
module Rails
|
6
6
|
module Configuration
|
7
|
-
module Shared
|
8
|
-
def middleware
|
9
|
-
@@default_middleware_stack ||= ActionDispatch::MiddlewareStack.new.tap do |middleware|
|
10
|
-
middleware.use('::ActionDispatch::Static', lambda { Rails.public_path }, :if => lambda { Rails.application.config.serve_static_assets })
|
11
|
-
middleware.use('::Rack::Lock', :if => lambda { !Rails.application.config.allow_concurrency })
|
12
|
-
middleware.use('::Rack::Runtime')
|
13
|
-
middleware.use('::Rails::Rack::Logger')
|
14
|
-
middleware.use('::ActionDispatch::ShowExceptions', lambda { Rails.application.config.consider_all_requests_local })
|
15
|
-
middleware.use('::ActionDispatch::Callbacks', lambda { !Rails.application.config.cache_classes })
|
16
|
-
middleware.use('::ActionDispatch::Cookies')
|
17
|
-
middleware.use(lambda { ActionController::Base.session_store }, lambda { ActionController::Base.session_options })
|
18
|
-
middleware.use('::ActionDispatch::Flash', :if => lambda { ActionController::Base.session_store })
|
19
|
-
middleware.use(lambda { Rails.application.metal_loader.build_middleware(Rails.application.config.metals) }, :if => lambda { Rails.application.metal_loader.metals.any? })
|
20
|
-
middleware.use('ActionDispatch::ParamsParser')
|
21
|
-
middleware.use('::Rack::MethodOverride')
|
22
|
-
middleware.use('::ActionDispatch::Head')
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
# Holds generators configuration:
|
27
|
-
#
|
28
|
-
# config.generators do |g|
|
29
|
-
# g.orm :datamapper, :migration => true
|
30
|
-
# g.template_engine :haml
|
31
|
-
# g.test_framework :rspec
|
32
|
-
# end
|
33
|
-
#
|
34
|
-
# If you want to disable color in console, do:
|
35
|
-
#
|
36
|
-
# config.generators.colorize_logging = false
|
37
|
-
#
|
38
|
-
def generators
|
39
|
-
@@generators ||= Rails::Configuration::Generators.new
|
40
|
-
if block_given?
|
41
|
-
yield @@generators
|
42
|
-
else
|
43
|
-
@@generators
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def after_initialize_blocks
|
48
|
-
@@after_initialize_blocks ||= []
|
49
|
-
end
|
50
|
-
|
51
|
-
def after_initialize(&blk)
|
52
|
-
after_initialize_blocks << blk if blk
|
53
|
-
end
|
54
|
-
|
55
|
-
def to_prepare_blocks
|
56
|
-
@@to_prepare_blocks ||= []
|
57
|
-
end
|
58
|
-
|
59
|
-
def to_prepare(&blk)
|
60
|
-
to_prepare_blocks << blk if blk
|
61
|
-
end
|
62
|
-
|
63
|
-
def respond_to?(name)
|
64
|
-
super || name.to_s =~ config_key_regexp
|
65
|
-
end
|
66
|
-
|
67
|
-
private
|
68
|
-
|
69
|
-
def method_missing(name, *args, &blk)
|
70
|
-
if name.to_s =~ config_key_regexp
|
71
|
-
return $2 == '=' ? options[$1] = args.first : options[$1]
|
72
|
-
end
|
73
|
-
super
|
74
|
-
end
|
75
|
-
|
76
|
-
def config_key_regexp
|
77
|
-
bits = config_keys.map { |n| Regexp.escape(n.to_s) }.join('|')
|
78
|
-
/^(#{bits})(?:=)?$/
|
79
|
-
end
|
80
|
-
|
81
|
-
def config_keys
|
82
|
-
(Railtie.railtie_names + Engine.engine_names).map { |n| n.to_s }.uniq
|
83
|
-
end
|
84
|
-
|
85
|
-
def options
|
86
|
-
@@options ||= Hash.new { |h,k| h[k] = ActiveSupport::OrderedOptions.new }
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
7
|
class Generators #:nodoc:
|
91
|
-
attr_accessor :aliases, :options, :fallbacks, :colorize_logging
|
8
|
+
attr_accessor :aliases, :options, :templates, :fallbacks, :colorize_logging
|
92
9
|
|
93
10
|
def initialize
|
94
11
|
@aliases = Hash.new { |h,k| h[k] = {} }
|
95
12
|
@options = Hash.new { |h,k| h[k] = {} }
|
96
13
|
@fallbacks = {}
|
14
|
+
@templates = []
|
97
15
|
@colorize_logging = true
|
98
16
|
end
|
99
17
|
|
data/lib/rails/console/app.rb
CHANGED
@@ -17,8 +17,8 @@ end
|
|
17
17
|
# create a new session. If a block is given, the new session will be yielded
|
18
18
|
# to the block before being returned.
|
19
19
|
def new_session
|
20
|
-
app =
|
21
|
-
session =
|
20
|
+
app = Rails.application
|
21
|
+
session = ActionDispatch::Integration::Session.new(app)
|
22
22
|
yield session if block_given?
|
23
23
|
session
|
24
24
|
end
|
@@ -26,7 +26,8 @@ end
|
|
26
26
|
# reloads the environment
|
27
27
|
def reload!(print=true)
|
28
28
|
puts "Reloading..." if print
|
29
|
-
|
29
|
+
# This triggers the to_prepare callbacks
|
30
|
+
ActionDispatch::Callbacks.new(Proc.new {}, false).call({})
|
30
31
|
true
|
31
32
|
end
|
32
33
|
|
data/lib/rails/engine.rb
CHANGED
@@ -1,7 +1,91 @@
|
|
1
|
-
require 'active_support/core_ext/module/delegation'
|
2
1
|
require 'rails/railtie'
|
2
|
+
require 'active_support/core_ext/module/delegation'
|
3
|
+
require 'pathname'
|
3
4
|
|
4
5
|
module Rails
|
6
|
+
# Rails::Engine allows you to wrap a specific Rails application and share it accross
|
7
|
+
# different applications. Since Rails 3.0, every Rails::Application is nothing
|
8
|
+
# more than an Engine, allowing you to share it very easily.
|
9
|
+
#
|
10
|
+
# Any Rails::Engine is also a Rails::Railtie, so the same methods (like rake_tasks and
|
11
|
+
# generators) and configuration available in the latter can also be used in the former.
|
12
|
+
#
|
13
|
+
# == Creating an Engine
|
14
|
+
#
|
15
|
+
# In Rails versions before to 3.0, your gems automatically behaved as Engine, however
|
16
|
+
# this coupled Rails to Rubygems. Since Rails 3.0, if you want a gem to automatically
|
17
|
+
# behave as Engine, you have to specify an Engine for it somewhere inside your plugin
|
18
|
+
# lib folder (similar with how we spceify a Railtie):
|
19
|
+
#
|
20
|
+
# # lib/my_engine.rb
|
21
|
+
# module MyEngine
|
22
|
+
# class Engine < Rails::Engine
|
23
|
+
# engine_name :my_engine
|
24
|
+
# end
|
25
|
+
# end
|
26
|
+
#
|
27
|
+
# Then ensure that this file is loaded at the top of your config/application.rb (or in
|
28
|
+
# your Gemfile) and it will automatically load models, controllers, helpers and metals
|
29
|
+
# inside app, load routes at "config/routes.rb", load locales at "config/locales/*",
|
30
|
+
# load tasks at "lib/tasks/*".
|
31
|
+
#
|
32
|
+
# == Configuration
|
33
|
+
#
|
34
|
+
# Besides the Railtie configuration which is shared across the application, in a
|
35
|
+
# Rails::Engine you can access load_paths, eager_load_paths and load_once_paths,
|
36
|
+
# which differently from a Railtie, are scoped to the current Engine.
|
37
|
+
#
|
38
|
+
# Example:
|
39
|
+
#
|
40
|
+
# class MyEngine < Rails::Engine
|
41
|
+
# # config.middleware is shared configururation
|
42
|
+
# config.middleware.use MyEngine::Middleware
|
43
|
+
#
|
44
|
+
# # Add a load path for this specific Engine
|
45
|
+
# config.load_paths << File.expand_path("../lib/some/path", __FILE__)
|
46
|
+
# end
|
47
|
+
#
|
48
|
+
# == Paths
|
49
|
+
#
|
50
|
+
# Since Rails 3.0, both your Application and Engines do not have hardcoded paths.
|
51
|
+
# This means that you are not required to place your controllers at "app/controllers",
|
52
|
+
# but in any place which you find convenient.
|
53
|
+
#
|
54
|
+
# For example, let's suppose you want to lay your controllers at lib/controllers, all
|
55
|
+
# you need to do is:
|
56
|
+
#
|
57
|
+
# class MyEngine < Rails::Engine
|
58
|
+
# paths.app.controllers = "lib/controllers"
|
59
|
+
# end
|
60
|
+
#
|
61
|
+
# You can also have your controllers being loaded from both "app/controllers" and
|
62
|
+
# "lib/controllers":
|
63
|
+
#
|
64
|
+
# class MyEngine < Rails::Engine
|
65
|
+
# paths.app.controllers << "lib/controllers"
|
66
|
+
# end
|
67
|
+
#
|
68
|
+
# The available paths in an Engine are:
|
69
|
+
#
|
70
|
+
# class MyEngine < Rails::Engine
|
71
|
+
# paths.app = "app"
|
72
|
+
# paths.app.controllers = "app/controllers"
|
73
|
+
# paths.app.helpers = "app/helpers"
|
74
|
+
# paths.app.models = "app/models"
|
75
|
+
# paths.app.metals = "app/metal"
|
76
|
+
# paths.app.views = "app/views"
|
77
|
+
# paths.lib = "lib"
|
78
|
+
# paths.lib.tasks = "lib/tasks"
|
79
|
+
# paths.config = "config"
|
80
|
+
# paths.config.initializers = "config/initializers"
|
81
|
+
# paths.config.locales = "config/locales"
|
82
|
+
# paths.config.routes = "config/routes.rb"
|
83
|
+
# end
|
84
|
+
#
|
85
|
+
# Your Application class adds a couple more paths to this set. And as in your Application,
|
86
|
+
# all folders under "app" are automatically added to the load path. So if you have
|
87
|
+
# "app/observers", it's added by default.
|
88
|
+
#
|
5
89
|
class Engine < Railtie
|
6
90
|
autoload :Configurable, "rails/engine/configurable"
|
7
91
|
autoload :Configuration, "rails/engine/configuration"
|
@@ -9,14 +93,15 @@ module Rails
|
|
9
93
|
class << self
|
10
94
|
attr_accessor :called_from
|
11
95
|
|
12
|
-
|
13
|
-
alias :
|
96
|
+
# TODO Remove this. It's deprecated.
|
97
|
+
alias :engine_name :railtie_name
|
14
98
|
|
15
99
|
def inherited(base)
|
16
|
-
unless abstract_railtie?
|
100
|
+
unless base.abstract_railtie?
|
17
101
|
base.called_from = begin
|
18
|
-
|
19
|
-
|
102
|
+
# Remove the line number from backtraces making sure we don't leave anything behind
|
103
|
+
call_stack = caller.map { |p| p.split(':')[0..-2].join(':') }
|
104
|
+
File.dirname(call_stack.detect { |p| p !~ %r[railties[\w\-\.]*/lib/rails|rack[\w\-\.]*/lib/rack] })
|
20
105
|
end
|
21
106
|
end
|
22
107
|
|
@@ -42,7 +127,7 @@ module Rails
|
|
42
127
|
delegate :middleware, :paths, :root, :to => :config
|
43
128
|
|
44
129
|
def load_tasks
|
45
|
-
super
|
130
|
+
super
|
46
131
|
config.paths.lib.tasks.to_a.sort.each { |ext| load(ext) }
|
47
132
|
end
|
48
133
|
|
@@ -76,10 +161,11 @@ module Rails
|
|
76
161
|
end
|
77
162
|
end
|
78
163
|
|
164
|
+
# DEPRECATED: Remove in 3.1
|
79
165
|
initializer :add_routing_namespaces do |app|
|
80
166
|
paths.app.controllers.to_a.each do |load_path|
|
81
167
|
load_path = File.expand_path(load_path)
|
82
|
-
Dir["#{load_path}
|
168
|
+
Dir["#{load_path}/*/**/*_controller.rb"].collect do |path|
|
83
169
|
namespace = File.dirname(path).sub(/#{load_path}\/?/, '')
|
84
170
|
app.routes.controller_namespaces << namespace unless namespace.empty?
|
85
171
|
end
|
@@ -89,19 +175,28 @@ module Rails
|
|
89
175
|
# I18n load paths are a special case since the ones added
|
90
176
|
# later have higher priority.
|
91
177
|
initializer :add_locales do
|
92
|
-
config.i18n.
|
178
|
+
config.i18n.railties_load_path.concat(paths.config.locales.to_a)
|
93
179
|
end
|
94
180
|
|
95
181
|
initializer :add_view_paths do
|
96
182
|
views = paths.app.views.to_a
|
97
|
-
|
98
|
-
|
183
|
+
ActiveSupport.on_load(:action_controller) do
|
184
|
+
prepend_view_path(views)
|
185
|
+
end
|
186
|
+
|
187
|
+
ActiveSupport.on_load(:action_mailer) do
|
188
|
+
prepend_view_path(views)
|
189
|
+
end
|
99
190
|
end
|
100
191
|
|
101
192
|
initializer :add_metals do |app|
|
102
193
|
app.metal_loader.paths.unshift(*paths.app.metals.to_a)
|
103
194
|
end
|
104
195
|
|
196
|
+
initializer :add_generator_templates do |app|
|
197
|
+
config.generators.templates.unshift(*paths.lib.templates.to_a)
|
198
|
+
end
|
199
|
+
|
105
200
|
initializer :load_application_initializers do
|
106
201
|
paths.config.initializers.to_a.sort.each do |initializer|
|
107
202
|
load(initializer)
|
@@ -127,4 +222,4 @@ module Rails
|
|
127
222
|
app.config.reload_engines
|
128
223
|
end
|
129
224
|
end
|
130
|
-
end
|
225
|
+
end
|
@@ -7,6 +7,7 @@ module Rails
|
|
7
7
|
attr_writer :eager_load_paths, :load_once_paths, :load_paths
|
8
8
|
|
9
9
|
def initialize(root=nil)
|
10
|
+
super()
|
10
11
|
@root = root
|
11
12
|
end
|
12
13
|
|
@@ -17,14 +18,19 @@ module Rails
|
|
17
18
|
paths.app.controllers "app/controllers", :eager_load => true
|
18
19
|
paths.app.helpers "app/helpers", :eager_load => true
|
19
20
|
paths.app.models "app/models", :eager_load => true
|
20
|
-
paths.app.
|
21
|
-
paths.app.
|
21
|
+
paths.app.mailers "app/mailers", :eager_load => true
|
22
|
+
paths.app.metals "app/metal", :eager_load => true
|
23
|
+
paths.app.views "app/views", :eager_load => true
|
22
24
|
paths.lib "lib", :load_path => true
|
23
25
|
paths.lib.tasks "lib/tasks", :glob => "**/*.rake"
|
26
|
+
paths.lib.templates "lib/templates"
|
24
27
|
paths.config "config"
|
25
28
|
paths.config.initializers "config/initializers", :glob => "**/*.rb"
|
26
29
|
paths.config.locales "config/locales", :glob => "*.{rb,yml}"
|
27
30
|
paths.config.routes "config/routes.rb"
|
31
|
+
paths.public "public"
|
32
|
+
paths.public.javascripts "public/javascripts"
|
33
|
+
paths.public.stylesheets "public/stylesheets"
|
28
34
|
paths
|
29
35
|
end
|
30
36
|
end
|
data/lib/rails/generators.rb
CHANGED
@@ -3,17 +3,23 @@ $:.unshift(activesupport_path) if File.directory?(activesupport_path) && !$:.inc
|
|
3
3
|
|
4
4
|
require 'active_support'
|
5
5
|
require 'active_support/core_ext/object/blank'
|
6
|
-
require 'active_support/core_ext/object/
|
6
|
+
require 'active_support/core_ext/object/singleton_class'
|
7
7
|
require 'active_support/core_ext/array/extract_options'
|
8
8
|
require 'active_support/core_ext/hash/deep_merge'
|
9
9
|
require 'active_support/core_ext/module/attribute_accessors'
|
10
10
|
require 'active_support/core_ext/string/inflections'
|
11
11
|
|
12
12
|
require 'rails/generators/base'
|
13
|
-
require 'rails/generators/named_base'
|
14
13
|
|
15
14
|
module Rails
|
16
15
|
module Generators
|
16
|
+
autoload :Actions, 'rails/generators/actions'
|
17
|
+
autoload :ActiveModel, 'rails/generators/active_model'
|
18
|
+
autoload :Migration, 'rails/generators/migration'
|
19
|
+
autoload :NamedBase, 'rails/generators/named_base'
|
20
|
+
autoload :ResourceHelpers, 'rails/generators/resource_helpers'
|
21
|
+
autoload :TestCase, 'rails/generators/test_case'
|
22
|
+
|
17
23
|
DEFAULT_ALIASES = {
|
18
24
|
:rails => {
|
19
25
|
:actions => '-a',
|
@@ -66,6 +72,11 @@ module Rails
|
|
66
72
|
aliases.deep_merge! config.aliases
|
67
73
|
options.deep_merge! config.options
|
68
74
|
fallbacks.merge! config.fallbacks
|
75
|
+
templates_path.concat config.templates
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.templates_path
|
79
|
+
@templates_path ||= []
|
69
80
|
end
|
70
81
|
|
71
82
|
def self.aliases #:nodoc:
|
@@ -161,7 +172,7 @@ module Rails
|
|
161
172
|
end
|
162
173
|
|
163
174
|
# Show help message with available generators.
|
164
|
-
def self.help
|
175
|
+
def self.help(command = 'generate')
|
165
176
|
lookup!
|
166
177
|
|
167
178
|
namespaces = subclasses.map{ |k| k.namespace }
|
@@ -173,7 +184,7 @@ module Rails
|
|
173
184
|
groups[base] << namespace
|
174
185
|
end
|
175
186
|
|
176
|
-
puts "Usage: rails
|
187
|
+
puts "Usage: rails #{command} GENERATOR [args] [options]"
|
177
188
|
puts
|
178
189
|
puts "General options:"
|
179
190
|
puts " -h, [--help] # Print generators options and usage"
|
@@ -191,6 +202,10 @@ module Rails
|
|
191
202
|
rails.delete("app")
|
192
203
|
print_list("rails", rails)
|
193
204
|
|
205
|
+
groups.delete("active_record") if options[:rails][:orm] == :active_record
|
206
|
+
groups.delete("test_unit") if options[:rails][:test_framework] == :test_unit
|
207
|
+
groups.delete("erb") if options[:rails][:template_engine] == :erb
|
208
|
+
|
194
209
|
groups.sort.each { |b, n| print_list(b, n) }
|
195
210
|
end
|
196
211
|
|
@@ -227,7 +242,7 @@ module Rails
|
|
227
242
|
paths = namespaces_to_paths(namespaces)
|
228
243
|
|
229
244
|
paths.each do |raw_path|
|
230
|
-
["
|
245
|
+
["rails/generators", "generators"].each do |base|
|
231
246
|
path = "#{base}/#{raw_path}_generator"
|
232
247
|
|
233
248
|
begin
|
@@ -250,7 +265,7 @@ module Rails
|
|
250
265
|
load_generators_from_railties!
|
251
266
|
|
252
267
|
$LOAD_PATH.each do |base|
|
253
|
-
Dir[File.join(base, "{generators,
|
268
|
+
Dir[File.join(base, "{rails/generators,generators}", "**", "*_generator.rb")].each do |path|
|
254
269
|
begin
|
255
270
|
require path
|
256
271
|
rescue Exception => e
|
@@ -286,4 +301,4 @@ end
|
|
286
301
|
|
287
302
|
# If the application was already defined, configure generators,
|
288
303
|
# otherwise you have to configure it by hand.
|
289
|
-
Rails::Generators.configure! if Rails.respond_to?(:application) && Rails.application
|
304
|
+
Rails::Generators.configure! if Rails.respond_to?(:application) && Rails.application
|