Install it in vendor/plugins:
./script/plugin install git://github.com/smtlaissezfaire/enhanced_query_analyzer.git
Add the model and migration:
./script/generate enhanced_query_analyzer
Migrate:
rake db:migrate
All select queries will be logged to the query_logs table. You now have the ability to store historical data of all of your database access.
If you’d like finer grained control over logging, provide a block to EnhancedQueryAnalyzer.log_if:
EnhancedQueryAnalyzer.log_if { |query, time| <true | false> }
For instance, if you’d only like to log queries over a second:
EnhancedQueryAnalyzer.log_if { |_, time| time > 1 }
Or only log queries matching some regex:
EnhancedQueryAnalyzer.log_if { |query, time| query =~ /select.../ }
To turn off all logging:
EnhancedQueryAnalyzer.log_if { |_, _| false }
Or in everything but the test environment (this is recommended):
EnhancedQueryAnalyzer.log_if do |query, time| RAILS_ENV != "test" end
You can also add the ability to dynamically run and log the explain of each query:
EnhancedQueryAnalyzer.explain_logging = true
You’ll need rspec and mysql. The database must be named ‘query_analyzer_test’
Written by Scott Taylor <scott@railsnewbie.com>. Sponsored by Eastmedia (eastmedia.com).
Dual licensed under the MIT & GPL licenses.