Wie bekomme ich die letzte SQL-Abfrage, die von ActiveRecord in Ruby on Rails ausgeführt wird?

7

Ich suche etwas wie CodeIgniters:

%Vor%

( Ссылка )

    
Nikki Erwin Ramirez 07.07.2009, 07:17
quelle

3 Antworten

23

AFAIK, es gibt keine einfache Möglichkeit, auf die Liste der Abfragen zuzugreifen. Nichtsdestotrotz können Sie leicht Zugang zu ihnen bekommen, indem Sie einen super einfachen Logger erstellen.

Wenn Sie die Klasse ActiveRecord::ConnectionAdapters::AbstractAdapter öffnen, sehen Sie eine Methode namens log. Diese Methode wird bei jeder Abfrage aufgerufen, um die Anweisung zu protokollieren. Standardmäßig protokolliert es alle Anweisungen mit dem Rails-Logger.

Sie können etwas wie

tun %Vor%

Jetzt können Sie die Abfrage mit

erhalten %Vor%     
Simone Carletti 07.07.2009, 08:22
quelle
2

Wahrscheinlich, weil ich eine neuere Version von ActiveRecord habe, als wenn diese Frage gestellt wurde, aber um ActiveRecord 3.2.3 zu verwenden, habe ich das Skript von Simone Carletti aktualisiert: Ich habe das zusätzliche Attribut binds hinzugefügt und den Aufruf verschoben bis alias_method_chain unterhalb der Methodendefinition, da es sonst zu einem Fehler führen würde, der besagt, dass die Methode nicht gefunden werden kann.

%Vor%

Die letzte Abfrage ist immer noch die gleiche:

%Vor%     
Koen. 06.04.2012 20:48
quelle
0

Ihr Entwicklungsprotokoll sollte alle SQL-Abfragen enthalten, die ausgeführt werden.

    
Corban Brook 07.07.2009 15:26
quelle