这个init.rb在液体项目中做了什么?

时间:2011-02-21 15:37:52

标签: ruby-on-rails

require 'liquid'
require 'extras/liquid_view'

if defined? ActionView::Template and ActionView::Template.respond_to? :register_template_handler
  ActionView::Template
else
  ActionView::Base
end.register_template_handler(:liquid, LiquidView)

这个init.rb文件运行的是什么,是一次性还是应用程序加载?

是否只是在ActionView :: Template或ActionView:Base类上调用regiser_template_handler方法?

它是如何对任何一个起作用的?

1 个答案:

答案 0 :(得分:1)

  

这个init.rb文件运行的是什么,是一次性还是应用程序加载?

当应用程序加载并加载插件/宝石时,它会运行一次。

  

是否只是在ActionView :: Template或ActionView:Base类上调用regiser_template_handler方法?

是。如果ActionView::Template已定义并响应register_template_handler,则会在其上调用register_template_handler,否则会在ActionView::Base上调用它。

  

它是如何对任何一个起作用的?

我不确定你到底是什么意思?如果你的意思是为什么它是这样的,它是为了向后兼容。 ActionView::Template在rails中是相对较新的(我认为在v2.1中引入),所以我猜它会在与旧版本一起使用时优雅地回退。