2009-12-30 10 views
5

Ich habe ein Fragment von JavaScript, das ich zu einer Seite hinzufügen möchte, aber nur in der Produktionsumgebung. Verfügt Rails über eine Möglichkeit, bei der Bereitstellung einzufügen oder bedingt einzuschließen. Ich weiß, ich könnte "wenn Rails.env.production?" Aber ich möchte diese Bedingung nicht jedes Mal überprüfen, wenn die Seite geladen wird.modifizieren erb-Datei bei der Bereitstellung

Antwort

1

Was ich in dieser Situation tun, ist in jeder Umgebung der Konfigurationsdatei eine Konstante erstellen:

#config/environments/development.rb 
SNIPPET = "" 

#config/environments/production.rb 
SNIPPET = "<script src='whatever.js'></script>" 

#app/views/file.html.erb 
<%= SNIPPET %> 
+0

Ich mag nicht die Idee, View-Code in die Konfigurationsdateien zu setzen. Dies ist, was Sichthelfer sind. –

+0

Sicher, das ist fair. Wirklich, was ich versuche zu vermitteln, ist: mach keine bedingte Logik basierend auf RAILS_ENV in Ansichten. Das ist, was die Umgebungskonfigurationsdateien sind :-) – Ben

5

Ich würde nicht über den Overhead einer if Erklärung besorgt sein.

Warum nicht ein eigenes Hilfsmethode verwenden:


def snippet 
    if RAILS_ENV == "production" 
    javascript_tag "whatever" 
    elsif . . .
end
dann können Sie die gleiche Syntax verwenden:

<%= snippet %>

und Sie bekommen ein paar Vorteile:

  • Zugang zu anderen Schienen Helfer
  • Ihre Konfigurationsdatei wird nicht mit Raw html
übersät
+0

Eigentlich ist das ähnlich zu dem, was ich habe, aber ich habe versucht, die "Wenn" -Kontrolle zu vermeiden. – rornoob

+0

Wenn Sie wirklich besorgt sind, versuchen Sie es mit und ohne das "if", und ich schätze, Sie werden keinen bemerkbaren Unterschied bekommen. – klochner

Verwandte Themen