2010-04-28 26 views
9

Estoy usando Rails 3.0.0.beta3 y Haml 3.0.0.rc.2, y no puedo encontrar dónde debo colocar las líneas de configuración para Haml (ni lo que son en la nueva versión, para eso importar). Utilizando Rails 2.3.5 y Haml 2, lo haríaUsando Rails 3 y Haml 3, ¿cómo configuro Haml?

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

en environment.rb. O bien, en Sinatra,

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

en mi archivo principal. Pero en Rails 3 todo ha cambiado, y no importa dónde coloque esa línea de configuración, obtengo un método indefinido o un error de objeto no definido.

Respuesta

8

De acuerdo con la filosofía de carga lenta de Rails 3, Haml solo se inicializa una vez que se carga ActionView::Base, lo que puede no haber sucedido cuando se está analizando el archivo de configuración. Para ejecutar el código una vez que Haml ha sido cargado, necesita ejecutarlo en un bloque ActiveSupport#on_load. Por ejemplo:

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

estoy considerando maneras de hacer accesible la configuración antes de que el sistema completo Haml se ha cargado, ya sea mediante la definición anterior Haml::Template.options o añadiendo un config.haml de hash especial.

17

Crear el archivo:

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

Con la opción haml:

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

Esto es absolutamente la mejor manera de hacerlo en Rails 3 ... ¿qué pasa con la configuración por medio ambiente? Si quiero tener ': feo' solo en producción? –

+0

+1, lástima que no haya sido elegido como la mejor respuesta, ya que es el mejor. –