2010-04-28 8 views
9

Sto usando Rails 3.0.0.beta3 e Haml 3.0.0.rc.2, e non riesco a trovare dove devo posizionare le linee di configurazione per Haml (né cosa sono nella nuova versione, per quello importa). Utilizzando Rails 2.3.5 e Haml 2, lo fareiUtilizzo di Rails 3 e Haml 3, come configurare Haml?

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

in environment.rb. Oppure, in Sinatra,

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

nel mio file principale. Ma in Rails 3 tutto è stato cambiato, e non importa dove ho messo quella linea di configurazione, ottengo un metodo indefinito o un errore dell'oggetto non definito.

risposta

8

In conformità con la filosofia di caricamento lento di Rails 3, Haml si inizializza solo una volta caricato ActionView::Base, che potrebbe non essere avvenuto quando il file di configurazione viene analizzato. Per eseguire il codice una volta caricato Haml, è necessario eseguirlo in un blocco ActiveSupport#on_load. Per esempio:

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

che sto considerando modi di fare la configurazione accessibile prima che il sistema Haml completo è stato caricato, sia attraverso la definizione di Haml::Template.options in precedenza o l'aggiunta di uno speciale config.haml hash.

17

Creare il file:

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

Con l'opzione Haml:

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

Questo è assolutamente il modo migliore per farlo in Rails 3 ... che dire di impostazioni per l'ambiente? Se voglio avere ": brutto" solo in produzione? –

+0

+1, peccato che non fossi scelto come migliore risposta dal momento che questo è il migliore. –