2012-12-09 17 views
11

Nel file layout di haml Vorrei determinare se siamo nel nostro ambiente di sviluppo e di costruzione. Stiamo usando Middleman.Come sapere in quale ambiente viene eseguito il codice?

mi piacerebbe fare qualcosa di simile:

- if environment == 'development' 
    /Development Code 
    = javascript_include_tag "Dev.js" 

ho provato ad accedere variabile d'ambiente di Ruby, così come definire una variabile personalizzata nel file config.rb senza successo.

risposta

28

quali hai quasi azzeccato - è necessario verificare contro un simbolo piuttosto che una stringa:

- if environment == :development 
    /Development Code 
    = javascript_include_tag "Dev.js" 

Middleman aggiunge anche la development? and build? methods che può essere più facile da usare:

- if development? 
    /Development Code 
    = javascript_include_tag "Dev.js" 

Funziona anche con ERB:

<% if development? %> 
<!-- Development Code --> 
<%= javascript_include_tag "Dev.js" %> 
<% end %> 
0

Innanzitutto, se possibile, è necessario separare la logica dai dati. Determina il tuo ambiente nel controller e attiva i dati inviati alla vista (file di layout HAML).

In genere è possibile impostare un flag nelle variabili di ambiente e accedervi nel codice da ENV. Per esempio, Sinatra rende l'/ test/impostazione produzione di sviluppo a disposizione all'interno del codice utilizzando il loro RACK_ENV simbolo:

 
:environment - configuration/deployment environment A symbol 
specifying the deployment environment; typically set to one of 
:development, :test, or :production. The :environment defaults to the 
value of the RACK_ENV environment variable (ENV['RACK_ENV']), or 
:development when no RACK_ENV environment variable is set. 

The environment can be set explicitly: 

set :environment, :production

Se si deve rotolare il proprio, questo è un buon modo per andare su di esso.

-1

Usa il: simbolo dell'ambiente che l'intermediario crea s per impostazione predefinita: http://rubydoc.info/github/middleman/middleman/Middleman/Application#environment-instance_method

combinato con Haml - si può fare qualcosa di simile:

= javascript_include_tag "Dev.js" unless :environment == "developement" 

nota che middlemans costruiscono processo cambia il: valore di ambiente di "costruire"

è anche possibile utilizzare developement ? per verificare se si è in dev o no: http://rubydoc.info/github/middleman/middleman/Middleman/Application#development%3F-instance_method

Tutto quanto sopra vale per Middleman 3.0.6 e potrebbe non funzionare su versioni minori (non funziona su 2.x di sicuro)