2010-04-28 7 views
9

J'utilise Rails 3.0.0.beta3 et Haml 3.0.0.rc.2, et je ne trouve pas où j'ai besoin de placer les lignes de configuration pour Haml (ni ce qu'elles sont dans la nouvelle version, pour cela matière). En utilisant Rails 2.3.5 et Haml 2, je le feraisEn utilisant Rails 3 et Haml 3, comment configurer Haml?

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

dans environnement.rb. Ou, dans Sinatra,

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

dans mon fichier principal. Mais dans Rails 3 tout a été changé, et peu importe où j'ai mis cette ligne de configuration, j'obtiens une méthode non définie ou une erreur d'objet indéfinie.

Répondre

8

Conformément à la philosophie de chargement paresseux de Rails 3, Haml ne s'initialise qu'une fois que ActionView::Base est chargé, ce qui peut ne pas être le cas lors de l'analyse du fichier de configuration. Pour exécuter le code une fois que Haml a été chargé, vous devez l'exécuter dans un bloc ActiveSupport#on_load. Par exemple:

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

J'envisage des moyens de rendre la configuration accessible avant que le système complet Haml a été chargé, que ce soit en définissant Haml::Template.options avant ou l'ajout d'un hachage config.haml spécial.

17

Créer le fichier:

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

Avec option haml:

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

Ceci est absolument la meilleure façon de le faire dans Rails 3 ... ce que sur les paramètres par environnement? Si je veux avoir ': laid 'seulement en production? –

+0

+1, dommage que vous n'ayez pas été choisi comme meilleure réponse car c'est le meilleur. –