提交 669fd849 编写于 作者: J Joshua Peek

AS::Concern redefines "include" to lazy include modules as dependencies

上级 c7c35be8
...@@ -2,7 +2,7 @@ module AbstractController ...@@ -2,7 +2,7 @@ module AbstractController
module Benchmarker module Benchmarker
extend ActiveSupport::Concern extend ActiveSupport::Concern
depends_on Logger include Logger
module ClassMethods module ClassMethods
def benchmark(title, log_level = ::Logger::DEBUG, use_silence = true) def benchmark(title, log_level = ::Logger::DEBUG, use_silence = true)
......
...@@ -2,7 +2,7 @@ module AbstractController ...@@ -2,7 +2,7 @@ module AbstractController
module Callbacks module Callbacks
extend ActiveSupport::Concern extend ActiveSupport::Concern
depends_on ActiveSupport::NewCallbacks include ActiveSupport::NewCallbacks
included do included do
define_callbacks :process_action, "response_body" define_callbacks :process_action, "response_body"
......
...@@ -2,7 +2,7 @@ module AbstractController ...@@ -2,7 +2,7 @@ module AbstractController
module Helpers module Helpers
extend ActiveSupport::Concern extend ActiveSupport::Concern
depends_on Renderer include Renderer
included do included do
extlib_inheritable_accessor :master_helper_module extlib_inheritable_accessor :master_helper_module
......
...@@ -2,7 +2,7 @@ module AbstractController ...@@ -2,7 +2,7 @@ module AbstractController
module Layouts module Layouts
extend ActiveSupport::Concern extend ActiveSupport::Concern
depends_on Renderer include Renderer
included do included do
extlib_inheritable_accessor :_layout_conditions extlib_inheritable_accessor :_layout_conditions
......
...@@ -4,7 +4,7 @@ module AbstractController ...@@ -4,7 +4,7 @@ module AbstractController
module Renderer module Renderer
extend ActiveSupport::Concern extend ActiveSupport::Concern
depends_on AbstractController::Logger include AbstractController::Logger
included do included do
attr_internal :formats attr_internal :formats
......
...@@ -29,7 +29,7 @@ module Flash ...@@ -29,7 +29,7 @@ module Flash
extend ActiveSupport::Concern extend ActiveSupport::Concern
# TODO : Remove the defined? check when new base is the main base # TODO : Remove the defined? check when new base is the main base
depends_on Session if defined?(ActionController::Http) include Session if defined?(ActionController::Http)
included do included do
# TODO : Remove the defined? check when new base is the main base # TODO : Remove the defined? check when new base is the main base
......
...@@ -4,13 +4,11 @@ module FilterParameterLogging ...@@ -4,13 +4,11 @@ module FilterParameterLogging
# TODO : Remove the defined? check when new base is the main base # TODO : Remove the defined? check when new base is the main base
if defined?(ActionController::Http) if defined?(ActionController::Http)
depends_on AbstractController::Logger include AbstractController::Logger
end end
included do included do
if defined?(ActionController::Http) include InstanceMethodsForNewBase
include InstanceMethodsForNewBase
end
end end
module ClassMethods module ClassMethods
......
...@@ -7,7 +7,7 @@ module RequestForgeryProtection ...@@ -7,7 +7,7 @@ module RequestForgeryProtection
# TODO : Remove the defined? check when new base is the main base # TODO : Remove the defined? check when new base is the main base
if defined?(ActionController::Http) if defined?(ActionController::Http)
depends_on AbstractController::Helpers, Session include AbstractController::Helpers, Session
end end
included do included do
......
...@@ -6,7 +6,7 @@ module Streaming ...@@ -6,7 +6,7 @@ module Streaming
# TODO : Remove the defined? check when new base is the main base # TODO : Remove the defined? check when new base is the main base
if defined?(ActionController::Http) if defined?(ActionController::Http)
depends_on ActionController::Renderer include ActionController::Renderer
end end
DEFAULT_SEND_FILE_OPTIONS = { DEFAULT_SEND_FILE_OPTIONS = {
......
...@@ -4,7 +4,7 @@ module Verification #:nodoc: ...@@ -4,7 +4,7 @@ module Verification #:nodoc:
# TODO : Remove the defined? check when new base is the main base # TODO : Remove the defined? check when new base is the main base
if defined?(ActionController::Http) if defined?(ActionController::Http)
depends_on AbstractController::Callbacks, Session, Flash, Renderer include AbstractController::Callbacks, Session, Flash, Renderer
end end
# This module provides a class-level method for specifying that certain # This module provides a class-level method for specifying that certain
......
...@@ -2,7 +2,7 @@ module ActionController ...@@ -2,7 +2,7 @@ module ActionController
module ConditionalGet module ConditionalGet
extend ActiveSupport::Concern extend ActiveSupport::Concern
depends_on RackConvenience include RackConvenience
# Sets the etag, last_modified, or both on the response and renders a # Sets the etag, last_modified, or both on the response and renders a
# "304 Not Modified" response if the request is already fresh. # "304 Not Modified" response if the request is already fresh.
......
...@@ -6,7 +6,7 @@ module ActionController ...@@ -6,7 +6,7 @@ module ActionController
module Helpers module Helpers
extend ActiveSupport::Concern extend ActiveSupport::Concern
depends_on AbstractController::Helpers include AbstractController::Helpers
included do included do
# Set the default directory for helpers # Set the default directory for helpers
......
...@@ -2,8 +2,8 @@ module ActionController ...@@ -2,8 +2,8 @@ module ActionController
module Layouts module Layouts
extend ActiveSupport::Concern extend ActiveSupport::Concern
depends_on ActionController::Renderer include ActionController::Renderer
depends_on AbstractController::Layouts include AbstractController::Layouts
module ClassMethods module ClassMethods
def _implied_layout_name def _implied_layout_name
......
...@@ -39,7 +39,7 @@ def render_to_body(options) ...@@ -39,7 +39,7 @@ def render_to_body(options)
module RenderOption #:nodoc: module RenderOption #:nodoc:
def self.extended(base) def self.extended(base)
base.extend ActiveSupport::Concern base.extend ActiveSupport::Concern
base.depends_on ::ActionController::RenderOptions base.send :include, ::ActionController::RenderOptions
def base.register_renderer(name) def base.register_renderer(name)
included { _add_render_option(name) } included { _add_render_option(name) }
...@@ -94,10 +94,10 @@ def _render_update(proc, options) ...@@ -94,10 +94,10 @@ def _render_update(proc, options)
module All module All
extend ActiveSupport::Concern extend ActiveSupport::Concern
depends_on ActionController::Renderers::Json include ActionController::Renderers::Json
depends_on ActionController::Renderers::Js include ActionController::Renderers::Js
depends_on ActionController::Renderers::Xml include ActionController::Renderers::Xml
depends_on ActionController::Renderers::RJS include ActionController::Renderers::RJS
end end
end end
end end
...@@ -2,7 +2,7 @@ module ActionController ...@@ -2,7 +2,7 @@ module ActionController
module Renderer module Renderer
extend ActiveSupport::Concern extend ActiveSupport::Concern
depends_on AbstractController::Renderer include AbstractController::Renderer
def process_action(*) def process_action(*)
self.formats = request.formats.map {|x| x.to_sym} self.formats = request.formats.map {|x| x.to_sym}
......
...@@ -2,7 +2,7 @@ module ActionController ...@@ -2,7 +2,7 @@ module ActionController
module Session module Session
extend ActiveSupport::Concern extend ActiveSupport::Concern
depends_on RackConvenience include RackConvenience
def session def session
@_request.session @_request.session
......
...@@ -2,7 +2,7 @@ module ActionController ...@@ -2,7 +2,7 @@ module ActionController
module Testing module Testing
extend ActiveSupport::Concern extend ActiveSupport::Concern
depends_on RackConvenience include RackConvenience
# OMG MEGA HAX # OMG MEGA HAX
def process_with_new_base_test(request, response) def process_with_new_base_test(request, response)
......
...@@ -2,7 +2,7 @@ module ActionController ...@@ -2,7 +2,7 @@ module ActionController
module UrlFor module UrlFor
extend ActiveSupport::Concern extend ActiveSupport::Concern
depends_on RackConvenience include RackConvenience
def process_action(*) def process_action(*)
initialize_current_url initialize_current_url
......
...@@ -102,8 +102,8 @@ def generate_message(attribute, message = :invalid, options = {}) ...@@ -102,8 +102,8 @@ def generate_message(attribute, message = :invalid, options = {})
module Validations module Validations
extend ActiveSupport::Concern extend ActiveSupport::Concern
depends_on ActiveSupport::Callbacks include ActiveSupport::Callbacks
depends_on ActiveModel::Validations include ActiveModel::Validations
included do included do
alias_method_chain :save, :validation alias_method_chain :save, :validation
......
...@@ -19,5 +19,7 @@ def included(base = nil, &block) ...@@ -19,5 +19,7 @@ def included(base = nil, &block)
super super
end end
end end
alias_method :include, :depends_on
end end
end end
...@@ -34,7 +34,7 @@ def baz ...@@ -34,7 +34,7 @@ def baz
module Bar module Bar
extend ActiveSupport::Concern extend ActiveSupport::Concern
depends_on Baz include Baz
def bar def bar
"bar" "bar"
...@@ -48,7 +48,7 @@ def baz ...@@ -48,7 +48,7 @@ def baz
module Foo module Foo
extend ActiveSupport::Concern extend ActiveSupport::Concern
depends_on Bar, Baz include Bar, Baz
end end
def setup def setup
...@@ -90,7 +90,7 @@ def test_modules_dependencies_are_met ...@@ -90,7 +90,7 @@ def test_modules_dependencies_are_met
assert @klass.included_modules.include?(ConcernTest::Bar) assert @klass.included_modules.include?(ConcernTest::Bar)
end end
def test_depends_on_with_multiple_modules def test_dependencies_with_multiple_modules
@klass.send(:include, Foo) @klass.send(:include, Foo)
assert_equal [ConcernTest::Foo, ConcernTest::Bar, ConcernTest::Baz::InstanceMethods, ConcernTest::Baz], @klass.included_modules[0..3] assert_equal [ConcernTest::Foo, ConcernTest::Bar, ConcernTest::Baz::InstanceMethods, ConcernTest::Baz], @klass.included_modules[0..3]
end end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册