0.0
No release in over 3 years
Low commit activity in last 3 years
Log MySQL queries with EXPLAIN that may be slow.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

 Project Readme

SpringOnion

Log MySQL queries with EXPLAIN that may be slow.

Inspired by MySQLCasualLog.pm.

Build Status

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 # or `SPRING_ONION_ENABLED=1`
# `SPRING_ONION_DATABASE_URL=mysql2://...`
# default: SpringOnion.connection = ActiveRecord::Base.connection.raw_connection
SpringOnion.source_filter_re = //

class Employee < ActiveRecord::Base; end

p Employee.all.to_a.count
#=> SpringOnion	INFO	2020-07-18 01:53:27 +0900	{"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'"]}
#=> 300024

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