2012-12-09 5 views
11

In der layout Datei von haml möchte ich feststellen, ob wir in unseren Entwicklungs- und Build-Umgebungen sind. Wir benutzen Middleman.Woher weiß man, in welcher Umgebung der Code läuft?

Ich möchte so etwas wie dies tun:

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

Ich habe versucht, Rubys Umgebungsvariable für den Zugriff auf sowie eine benutzerdefinierte Variable in der config.rb Datei ohne Erfolg definieren.

Antwort

28

Sie haben es fast richtig - Sie gegen ein Symbol überprüfen müssen, anstatt einen String:

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

Middleman fügt auch die development? and build? methods, die verwendet werden einfacher sein kann:

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

Das funktioniert auch mit ERB:

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

Zuerst, wenn möglich, sollten Sie die Logik von den Daten trennen. Bestimmen Sie Ihre Umgebung in Ihrem Controller und schalten Sie die gesendeten Daten in die Ansicht um (HAML-Layout-Datei).

Normalerweise würden Sie in Ihren Umgebungsvariablen ein Flag setzen und in Ihrem Code von ENV darauf zugreifen. Zum Beispiel macht Sinatra die Entwicklung/Test/Produktion Einstellung in dem Code zur Verfügung, ihr RACK_ENV Symbol mit:

 
: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

Wenn Sie Ihre eigene Rolle haben, dass ein guter Weg, um darüber zu gehen.

-1

Verwenden Sie das: Umgebungssymbol, dass Zwischenhändler erstellen s standardmäßig: http://rubydoc.info/github/middleman/middleman/Middleman/Application#environment-instance_method

mit haml kombiniert - Sie so etwas wie zu tun:

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

beachten Sie, dass middlemans Build-Prozess ändert die: Umgebungswert zu "bauen"

Sie auch Entwicklung nutzen können ? zu testen, ob Sie sind auf dev oder nicht: http://rubydoc.info/github/middleman/middleman/Middleman/Application#development%3F-instance_method

Alle oben 3.0.6 Middleman gilt und möglicherweise nicht weniger Versionen arbeiten (nicht sicher auf 2.x funktionieren)