提交 d25fe31c 编写于 作者: A Aaron Patterson

lazily instantiate application subclasses

this means we can meaningfully override methods in the subclass
上级 2090615d
......@@ -29,7 +29,13 @@ module Rails
autoload :WelcomeController
class << self
attr_accessor :application, :cache, :logger
@application = @app_class = nil
attr_writer :application
attr_accessor :app_class, :cache, :logger
def application
@application ||= (app_class.instance if app_class)
end
delegate :initialize!, :initialized?, to: :application
......
......@@ -87,7 +87,7 @@ class Application < Engine
class << self
def inherited(base)
super
base.instance
Rails.app_class = base
end
# Makes the +new+ method public.
......@@ -117,8 +117,6 @@ def initialize(initial_variable_values = {}, &block)
@railties = nil
@message_verifiers = {}
Rails.application ||= self
add_lib_to_load_path!
ActiveSupport.run_load_hooks(:before_configuration, self)
......
......@@ -11,4 +11,14 @@ def initialize(*args)
assert !engine.routes?
end
def test_application_can_be_subclassed
klass = Class.new(Rails::Application) do
attr_reader :hello
def initialize
@hello = "world"
end
end
assert_equal "world", klass.instance.hello
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册