2010-07-13 2 views
4

Je suis nouveau à Rails, donc pardon à la question fondamentale.des questions Rails, instruction SQL dans les journaux

Je vois des rails recrache ceci (dans la console) pour chaque demande que je fais à mon contrôleur. Pourquoi? Je ne suis même pas en train de faire une opération DB, je viens de commencer à écrire une application HelloWorld rails. Je l'ai fait choisir MySQL comme db lors de la création ce rails projet (rails -d mysql helloworld)

SQL (0.1ms) SET NAMES 'utf8' 
SQL (0.1ms) SET SQL_AUTO_IS_NULL=0 

Je remarqué que des rails tente d'établir une connexion DB pour chaque demande, indépendamment du fait que vous faites un DB/ActiveRecord opération. Il le fait juste après action_controller/dispatch. Cela me semble une perte de ressource DB, pourquoi établir une connexion avec DB alors que je ne fais même pas une opération ActiveRecord ??

+0

+1 Je suis également intéressé par la réponse – zengr

Répondre

1

Vous voyez cela à chaque demande parce que vous êtes en mode développement. En mode production (ou avec la mise en cache des classes activée), cela ne se produit qu'une seule fois, lorsque la connexion est ajoutée au pool de connexions.

+0

alors voici ce que j'ai fait - j'ai changé config.cache_classes = true dans mon env/development.rb et je ne vois pas la sortie SQL ci-dessus à chaque demande comme vous l'avez dit. Mais j'ai aussi essayé une autre chose - qui est d'arrêter l'instance mysql après avoir exécuté deux demandes de contrôleur helloworld. Après avoir stoppé mysql, les requêtes du contrôleur helloworld se plaignent qu'il ne peut pas se connecter à mysql, ce qui est mon point d'origine. Cela ressemble à un gaspillage de cycles CPU vérifiant la connexion quand je n'en ai même pas besoin. Ne pas vouloir commencer la guerre des flammes :) mais cela semble être un défaut de conception dans les rails? – kapso

+0

Il est certainement une conception de décision, dont certains soutiendront et certains appelleront un défaut :) Remarque: si vous n'avez pas besoin activerecord du tout dans votre application, vous pouvez le désactiver dans le fichier environment.rb, mais Sinon, je * pense * que vous êtes coincé avec ça. C'est un montant assez négligeable de frais généraux, mais oui, il est potentiellement inutile sur une demande donnée. – daryn

+0

Je suis d'accord, merci pour vos contributions – kapso