Je fais des travaux de maintenance sur un site Rails qui est déployé en utilisant Phusion Passenger. Le workflow est un peu différent de l'arrangement standard de test-dev-production à trois niveaux de Railsian; à la place, il existe deux installations distinctes de la même base de code exécutées sur des bases de données Oracle parallèles; Le site de développement réside sur qa.domain.com, et le site en direct sur www.domain.comRails: comportement différent sur le développement et la production
Je rencontre un comportement différent dans l'extrait de code suivant (de 'vendors_controller.rb', qui utilise AuthenticatedSystem) entre le deux environnements:
le code entre les commentaires détruit l'objet utilisateur vient d'être créé si le système n'a pas pu créer un enregistrement correspondant. Cela fonctionne correctement sur le serveur de développement mais pas sur le serveur de production, où l'objet Utilisateur reste obstinément dans la base de données même si l'enregistrement échoue. Pousser les changements à la production est une simple question de télécharger le fichier de contrôleurs et faire touch tmp/restart.txt
via le shell. Les deux bases de code sont par ailleurs identiques; qu'est-ce qui pourrait causer cette différence?
Merci de votre considération!
Justin
EDIT: Il y a quelques différences dans production.rb
entre les deux installations qui pourraient aider à diagnostiquer le problème. En production,
config.cache_classes = true
# Full error reports are disabled and caching is turned on
config.action_controller.consider_all_requests_local = false
config.action_controller.perform_caching = true
en cours de développement, ces trois indicateurs sont mis à leurs valeurs inverses. Merci!
Merci pour la réponse, jonnii ... très appréciée! Je n'ai pas écrit le code moi-même - je ne fais que le déboguer - mais votre solution est beaucoup plus élégante. En outre, il s'avère que le problème était avec Phusion Passenger; J'avais renommé l'ancienne version du fichier en 'vendors_controller_031610.rb' au cas où je devrais revenir rapidement et il s'avère que Phusion utilisait le contrôleur obsolète, même après avoir été redémarré. La suppression de l'ancien fichier a résolu le problème. Étrange, hein? – justinbach