Ruby on rails Rails::Application.initialize!方法源位置
我想在我的博客应用程序的environment.rb中找到以下行的源代码Ruby on rails Rails::Application.initialize!方法源位置,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想在我的博客应用程序的environment.rb中找到以下行的源代码 Blog::Application.initialize! 如果发现,则初始化!方法仅在源代码中的一个位置定义 railties/lib/rails/application.rb 然而,它是一个实例方法 我在rails控制台中做了一些实验: Blog::Application.initialize! # => Application has been already initialized Blog::Appli
Blog::Application.initialize!
如果发现,则初始化!方法仅在源代码中的一个位置定义
railties/lib/rails/application.rb
然而,它是一个实例方法
我在rails控制台中做了一些实验:
Blog::Application.initialize! # => Application has been already initialized
Blog::Application.method(:initialize!) # => undefined method for Class
Blog::Application.instance_methods.include?(:initialize!) # => true
奇怪的是,
initialize有一个未定义的方法代码>当它在应用程序类上明确可调用时。请帮助理解这段代码。这是由于一些Ruby Magic,又称“方法缺失”:
查看可配置.rb
:
module Rails
class Railtie
module Configurable
extend ActiveSupport::Concern
module ClassMethods
[...]
def method_missing(*args, &block)
instance.send(*args, &block)
end
end
end
end
end
它删除对底层应用程序实例的所有调用。如果它是Blog::application
的实例方法,则您将无法调用Blog::application.initialize代码>。您的描述相互矛盾。@sawa或尝试创建一个新的rails应用程序。不,我不会。我不会听从你的命令。这很有道理,回答了我的问题。然而,我很难理解Rails::Railtie::Configurable是如何包含在Blog::Application中的。它不会出现在Rails::Application的祖先中。如果您可以编辑答案指出这一点,这将是很有帮助的。
Blog::Application.ancestors
=> [... Rails::Railtie::Configurable ...]
module Rails
class Railtie
module Configurable
extend ActiveSupport::Concern
module ClassMethods
[...]
def method_missing(*args, &block)
instance.send(*args, &block)
end
end
end
end
end