使用Rails 3和Haml 3,如何配置Haml?

我正在使用Rails 3.0.0.beta3和Haml 3.0.0.rc.2,我找不到我需要为Haml放置配置行的位置(也不是它们在新版本中的用途) 。 使用Rails 2.3.5和Haml 2,我会这样做

Haml::Template.options[:format] = :html5 

在environment.rb中。 或者,在Sinatra,

 set :haml, {:format => :html5} 

在我的主文件中。 但是在Rails 3中,一切都被改变了,无论我把配置线放在哪里,我都会得到一个未定义的方法或未定义的对象错误。

创建文件:

 #{Rails.root}/config/initializers/haml.rb 

使用haml选项:

 Haml::Template.options[:attr_wrapper] = '"' 

根据Rails 3的延迟加载原理,Haml只在加载ActionView::Base时才初始化,这在解析配置文件时可能不会发生。 为了在加载Haml后运行代码,您需要在ActiveSupport#on_load块中运行它。 例如:

 ActiveSupport.on_load(:action_vew) do Haml::Template.options[:format] = :html5 end 

我正在考虑在加载完整的Haml系统之前使配置可访问的方法,可以通过先前定义Haml::Template.options或添加特殊的config.haml哈希。