Comment savoir si des rails sont en production?


86

J'avais l'habitude script/server -e productionde démarrer des rails en mode production. C'est le cas et je n'ai eu aucune erreur. Cependant, comment savoir s'il est en mode production? J'ai essayé une route inexistante et j'ai obtenu une page d'erreur similaire à celle que j'ai faite en développement.

Je pensais que si sous le modèle de production, j'obtiens la page d'erreur 404 qui se trouve dans mon dossier / public.

Cela signifie-t-il qu'il n'a pas démarré en mode production?

Merci de votre aide.

Réponses:


34

2 moyens simples:

tail -f log/production.log

s'il y a des entrées qui remplissent ce journal après avoir accédé à l'application, vous êtes en mode production.

deuxième façon:

dans l'une de vos vues (probablement la mise en page est bonne), ajoutez simplement

<%= "Environment: #{RAILS_ENV}" %>

Et cela vous montrera dans quel environnement vous travaillez.

Éditer

Vous verrez la page d'exception par défaut au lieu des pages d'erreur réelles sur n'importe quel environnement si la demande est considérée comme "locale" (c'est-à-dire de localhost ou 127.0.0.1), vous pouvez la remplacer en l'ajoutant à votre ApplicationController

def local_request?
  false
end

Vous pouvez trouver cette méthode dans la documentation de l' API


Je ne parviens pas à obtenir la deuxième façon de travailler, mais il y a des entrées dans mon production.log indiquant que j'ai créé une tâche au temps X. Alors pourquoi est-ce que je n'obtiens pas la bonne page d'erreur 404? Dois-je spécifier quelque part pour fournir la bonne page d'erreur? Merci pour l'aide.
sent-hil

J'ai eu une erreur de mon point de vue et j'ai dû utiliser l'approche de @ Krishnaprasad à la place.
Besi

5
Veuillez noter qu'il RAILS_ENVest obsolète. Utilisez Rails.envplutôt.
Soullivaneuh

238

Si ses Rails 3.1+, Rails.env.production?reviendront truelors de la production.

Rails.env.production?  #=> true  
Rails.env.staging?     #=> false
Rails.env.development? #=> false  

2
>> Rails.envvia rails capparaît pour afficher pour n'importe quel mode.
obfk

6
Rails.env.development?aussi disponible.
hlcs

Tout avec un point d'interrogation est disponible. Rails.envest une chaîne décorée de ActiveSupport::StringInquirer. api.rubyonrails.org/classes/ActiveSupport/StringInquirer.html
Sebastian vom Meer

Pour rappel, cela fonctionne également dans la console des rails. Sur un serveur de production, j'ai pu exécuter: console rails, puis la commande ci-dessus.
Ryan le

28

Pour les versions Rails modernes (3+), Rails.envrenvoie l'environnement sous la forme String:

Rails.env #=> "production"

Il existe également des accesseurs utiles pour chaque environnement qui renverront un Boolean:

Rails.env.production?  #=> true  
Rails.env.staging?     #=> false
Rails.env.development? #=> false  


3

J'ai trouvé beaucoup plus facile de simplement redémarrer le serveur rails et de lire la deuxième ligne sur la ligne de commande:

rails s -e productionSorties en cours d'exécution :

=> Booting Puma
=> Rails 4.2.4 application starting in `production` on http://localhost:3000

Il y avait Webrick dans l'exemple mais certaines personnes ne comprenaient pas comment changer de serveur remplacerait simplement le nom. Mis à jour pour plus de clarté.


8
Personne ne l'utilise WEBricken production.
Hauleth le

Hauleth a tout à fait raison. Il s'agit simplement de tester dans quel environnement vous vous trouvez pendant le développement.
bkunzi01

Si cette réponse est trolling, c'est la maîtrise! Toutes nos félicitations!
JD.

-2

alternative à la ligne de commande

$ echo $ RAILS_ENV


Cela ne fonctionnera pas si le serveur a été démarré avec une variable ENV en ligne. Cela dit, si cela était fait, un script / alias / etc devrait se trouver quelque part sur le disque, qui inclura la variable RAILS_ENV. On peut rechercher sur le disque, par exemple avecack
New Alexandria

cela ne fonctionne pas .... ce qu'il y a dans la variable et comment il obtient l'environnement ???
zee
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.