aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails
diff options
context:
space:
mode:
Diffstat (limited to 'railties/lib/rails')
-rw-r--r--railties/lib/rails/application.rb12
-rw-r--r--railties/lib/rails/application/configurable.rb19
-rw-r--r--railties/lib/rails/application/metal.rb (renamed from railties/lib/rails/rack/metal.rb)7
-rw-r--r--railties/lib/rails/configuration.rb2
-rw-r--r--railties/lib/rails/engine.rb2
-rw-r--r--railties/lib/rails/generators.rb1
-rw-r--r--railties/lib/rails/rack.rb1
-rw-r--r--railties/lib/rails/rack/logger.rb18
-rw-r--r--railties/lib/rails/railtie.rb10
-rw-r--r--railties/lib/rails/tasks/middleware.rake2
10 files changed, 42 insertions, 32 deletions
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb
index b7e5eb7a1d..9e41210119 100644
--- a/railties/lib/rails/application.rb
+++ b/railties/lib/rails/application.rb
@@ -6,8 +6,10 @@ require 'rails/engine'
module Rails
class Application < Engine
autoload :Bootstrap, 'rails/application/bootstrap'
+ autoload :Configurable, 'rails/application/configurable'
autoload :Configuration, 'rails/application/configuration'
autoload :Finisher, 'rails/application/finisher'
+ autoload :Metal, 'rails/application/metal'
autoload :Railties, 'rails/application/railties'
autoload :RoutesReloader, 'rails/application/routes_reloader'
@@ -16,10 +18,10 @@ module Rails
alias :configure :class_eval
def instance
- if instance_of?(Rails::Application)
- Rails.application.instance
+ if self == Rails::Application
+ Rails.application
else
- @instance ||= new
+ @@instance ||= new
end
end
@@ -41,10 +43,6 @@ module Rails
require environment if environment
end
- def config
- @config ||= Application::Configuration.new(self.class.find_root_with_flag("config.ru", Dir.pwd))
- end
-
def routes
::ActionController::Routing::Routes
end
diff --git a/railties/lib/rails/application/configurable.rb b/railties/lib/rails/application/configurable.rb
new file mode 100644
index 0000000000..f598e33965
--- /dev/null
+++ b/railties/lib/rails/application/configurable.rb
@@ -0,0 +1,19 @@
+module Rails
+ class Application
+ module Configurable
+ def self.included(base)
+ base.extend ClassMethods
+ end
+
+ module ClassMethods
+ def inherited(base)
+ raise "You cannot inherit from a Rails::Application child"
+ end
+ end
+
+ def config
+ @config ||= Application::Configuration.new(self.class.find_root_with_flag("config.ru", Dir.pwd))
+ end
+ end
+ end
+end \ No newline at end of file
diff --git a/railties/lib/rails/rack/metal.rb b/railties/lib/rails/application/metal.rb
index 732936da32..17786dd4ba 100644
--- a/railties/lib/rails/rack/metal.rb
+++ b/railties/lib/rails/application/metal.rb
@@ -1,12 +1,16 @@
require 'action_dispatch'
module Rails
- module Rack
+ class Application
class Metal
def self.paths
@paths ||= []
end
+ def self.metals
+ @metals ||= []
+ end
+
def initialize(list=nil)
metals = []
list = Array(list || :all).map(&:to_sym)
@@ -26,6 +30,7 @@ module Rails
end
@metals = metals.map { |m| m.to_s.camelize.constantize }
+ self.class.metals.concat(@metals)
end
def new(app)
diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb
index 3c5c1c1e16..c5cb7b2d09 100644
--- a/railties/lib/rails/configuration.rb
+++ b/railties/lib/rails/configuration.rb
@@ -16,7 +16,7 @@ module Rails
middleware.use('::ActionDispatch::Cookies')
middleware.use(lambda { ActionController::Base.session_store }, lambda { ActionController::Base.session_options })
middleware.use('::ActionDispatch::Flash', :if => lambda { ActionController::Base.session_store })
- middleware.use(lambda { Rails::Rack::Metal.new(Rails.application.config.metals) })
+ middleware.use(lambda { Rails::Application::Metal.new(Rails.application.config.metals) }, :if => lambda { Rails::Application::Metal.metals.any? })
middleware.use('ActionDispatch::ParamsParser')
middleware.use('::Rack::MethodOverride')
middleware.use('::ActionDispatch::Head')
diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb
index 8cb938c2b9..ebbee67cf4 100644
--- a/railties/lib/rails/engine.rb
+++ b/railties/lib/rails/engine.rb
@@ -99,7 +99,7 @@ module Rails
end
initializer :add_metals do
- Rails::Rack::Metal.paths.unshift(*paths.app.metals.to_a)
+ Rails::Application::Metal.paths.unshift(*paths.app.metals.to_a)
end
initializer :load_application_initializers do
diff --git a/railties/lib/rails/generators.rb b/railties/lib/rails/generators.rb
index 83b8c74966..2281746b00 100644
--- a/railties/lib/rails/generators.rb
+++ b/railties/lib/rails/generators.rb
@@ -200,6 +200,7 @@ module Rails
# Print Rails defaults first.
rails = groups.delete("rails")
rails.map! { |n| n.sub(/^rails:/, '') }
+ rails.delete("app")
print_list("rails", rails)
groups.sort.each { |b, n| print_list(b, n) }
diff --git a/railties/lib/rails/rack.rb b/railties/lib/rails/rack.rb
index 4bc0c2c88b..1f20ceae44 100644
--- a/railties/lib/rails/rack.rb
+++ b/railties/lib/rails/rack.rb
@@ -3,7 +3,6 @@ module Rails
autoload :Debugger, "rails/rack/debugger"
autoload :Logger, "rails/rack/logger"
autoload :LogTailer, "rails/rack/log_tailer"
- autoload :Metal, "rails/rack/metal"
autoload :Static, "rails/rack/static"
end
end
diff --git a/railties/lib/rails/rack/logger.rb b/railties/lib/rails/rack/logger.rb
index 91a613092f..de21fb4f10 100644
--- a/railties/lib/rails/rack/logger.rb
+++ b/railties/lib/rails/rack/logger.rb
@@ -9,27 +9,23 @@ module Rails
end
def call(env)
- @env = env
- before_dispatch
- result = @app.call(@env)
- after_dispatch
- result
+ before_dispatch(env)
+ @app.call(env)
+ ensure
+ after_dispatch(env)
end
protected
- def request
- @request ||= ActionDispatch::Request.new(@env)
- end
-
- def before_dispatch
+ def before_dispatch(env)
+ request = ActionDispatch::Request.new(env)
path = request.request_uri.inspect rescue "unknown"
info "\n\nStarted #{request.method.to_s.upcase} #{path} " <<
"for #{request.remote_ip} at #{Time.now.to_s(:db)}"
end
- def after_dispatch
+ def after_dispatch(env)
Rails::Subscriber.flush_all!
end
diff --git a/railties/lib/rails/railtie.rb b/railties/lib/rails/railtie.rb
index 3cf358d75f..c038d0ac70 100644
--- a/railties/lib/rails/railtie.rb
+++ b/railties/lib/rails/railtie.rb
@@ -17,7 +17,7 @@ module Rails
def inherited(base)
unless abstract_railtie?(base)
- base.send(:include, self::Configurable) if add_configurable?(base)
+ base.send(:include, self::Configurable)
subclasses << base
end
end
@@ -53,14 +53,6 @@ module Rails
def abstract_railtie?(base)
ABSTRACT_RAILTIES.include?(base.name)
end
-
- # Just add configurable behavior if a Configurable module is defined
- # and the class is a direct child from self. This is required to avoid
- # application or plugins getting class configuration method from Railties
- # and/or Engines.
- def add_configurable?(base)
- defined?(self::Configurable) && base.ancestors[1] == self
- end
end
def rake_tasks
diff --git a/railties/lib/rails/tasks/middleware.rake b/railties/lib/rails/tasks/middleware.rake
index c3aaddb153..251da67c96 100644
--- a/railties/lib/rails/tasks/middleware.rake
+++ b/railties/lib/rails/tasks/middleware.rake
@@ -3,5 +3,5 @@ task :middleware => :environment do
Rails.configuration.middleware.active.each do |middleware|
puts "use #{middleware.inspect}"
end
- puts "run #{Rails::Application.class.name}"
+ puts "run #{Rails::Application.instance.class.name}.routes"
end