C'è un modo attraverso il quale vedo quali query mysql vengono attivate da ActiveRecord nella console di rails?Come vedere le query mysql nella console di rails
Grazie in anticipo.
C'è un modo attraverso il quale vedo quali query mysql vengono attivate da ActiveRecord nella console di rails?Come vedere le query mysql nella console di rails
Grazie in anticipo.
Sì, questo può essere ottenuto reindirizzando il log delle rotaie all'output standard.
Scrivi questi nel vostro prompt della console:
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Base.connection_pool.clear_reloadable_connections!
Inoltre, è possibile inserire queste righe nel file ~/.irbrc, in modo che ogni volta che non è necessario scrivere manualmente queste 2 linee:
require 'rubygems'
if ENV.include?('RAILS_ENV') && ENV["RAILS_ENV"] == 'development'
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Base.connection_pool.clear_reloadable_connections!
end
Spero che questo aiuti ...
Un altro modo per farlo per ogni progetto è ispirato da http://guides.rubyonrails.org/debugging_rails_applications.html#what-is-the-logger-questionmark:
è possibile specificare un logger alternativa nel vostro environment.rb o qualsiasi file di ambiente:
ActiveRecord::Base.logger = Logger.new("log/active_record.log") #This outputs the mysql queries to a file named active_record.log under your project's log folder.
Naturalmente, è necessario riavviare il server per far funzionare le cose.
In Rails 3+ è possibile utilizzare il metodo di to_sql
ActiveRecord :: Relation:
User.where(:id => 3).to_sql
#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = 3"
Lavorato :) grazie mille. –
Ho appena provato ad aggiungere questo al file '.irbrc' per un vecchio progetto Rails 2.3. ActiveRecord dice che non è ancora stato caricato quando eseguo script/console. C'è qualche trucco che devo fare prima? –
basta aggiungere 'require 'active_record'' sotto' require' rubygems'' – Ritikesh