SpringOnion
Log MySQL queries with EXPLAIN that may be slow.
Inspired by MySQLCasualLog.pm.
Installation
Add this line to your application's Gemfile:
gem 'spring_onion'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install spring_onion
Usage
#!/usr/bin/env ruby
require 'active_record'
require 'spring_onion'
ActiveRecord::Base.establish_connection(
adapter: 'mysql2',
username: 'root',
database: 'employees'
)
SpringOnion.enabled = true
SpringOnion.source_filter_re = //
class Employee < ActiveRecord::Base; end
p Employee.all.to_a.count
Log Output
{
"sql": "SELECT `employees`.* FROM `employees`",
"explain": [
{
"line": 1,
"select_type": "SIMPLE",
"table": "employees",
"partitions": null,
"type": "ALL",
"possible_keys": null,
"key": null,
"key_len": null,
"ref": null,
"rows":298936,
"filtered": 100.0,
"Extra": null
}
],
"warnings": {
"line 1": [
"slow_type"
]
},
"backtrace": [
"/foo/bar/zoo/baz.rb:18:in `\u003ctop (required)\u003e'"
]
}
Test
docker-compose build
docker-compose run client bundle exec appraisal ar60 rake