2009-12-30 7 views
5

J'ai un fragment de JavaScript que je veux ajouter à une page, mais seulement dans l'environnement de production. Les rails ont-ils un moyen d'insertion ou d'inclusion conditionnelle lors du déploiement. Je sais que je pourrais faire "si Rails.env.production?" Mais je préfère ne pas faire cette vérification de condition chaque fois que la page est chargée.modifier fichier erb sur le déploiement

Répondre

1

Ce que je fais dans cette situation est de créer une constante dans le fichier de configuration de chaque environnement:

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

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

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

Je n'aime pas l'idée de mettre du code de vue dans les fichiers de configuration. C'est ce que les aides de vue sont POUR. –

+0

Bien sûr, c'est juste. Vraiment ce que j'essaie de communiquer est: ne faites pas de logique conditionnelle basée sur RAILS_ENV dans les vues. C'est ce que les fichiers de configuration de l'environnement sont pour :-) – Ben

5

Je ne serais pas inquiet au sujet de la tête d'une déclaration if.

Pourquoi ne pas utiliser une méthode d'aide personnalisée:


def snippet 
    if RAILS_ENV == "production" 
    javascript_tag "whatever" 
    elsif . . .
end
vous pouvez utiliser la même syntaxe:

<%= snippet %>

et vous obtenez un des avantages de couple:

  • accès à d'autres aides rails
  • votre fichier de configuration ne sera pas jonché de html brut
+0

En fait, c'est similaire à ce que j'ai, mais j'essayais d'éviter le "si" vérifier. – rornoob

+0

Si vous êtes vraiment inquiet, essayez de le chronométrer avec et sans "si", et je suppose que vous n'obtiendrez pas une différence notable. – klochner