Skip to content

Commit

Permalink
Fixes tests (iMacTia#9)
Browse files Browse the repository at this point in the history
  • Loading branch information
iMacTia authored May 7, 2019
1 parent 37c4b11 commit 678964b
Show file tree
Hide file tree
Showing 14 changed files with 86 additions and 17 deletions.
20 changes: 20 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
require:
- rubocop-performance

AllCops:
DisplayCopNames: true
DisplayStyleGuide: true
TargetRubyVersion: 2.3

Metrics/BlockLength:
Exclude:
- spec/**/*.rb

Metrics/LineLength:
Max: 120
Exclude:
- spec/**/*.rb

Style/Documentation:
Exclude:
- 'spec/**/*'
13 changes: 11 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
language: ruby
cache: bundler
rvm:
- 2.3
- 2.4
- 2.5
before_install: gem install bundler -v 1.16.2
- 2.6
before_install:
- gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
- gem install bundler -v '~> 1.17'
gemfile:
- gemfiles/lograge10.gemfile
- gemfiles/lograge11.gemfile
deploy:
provider: rubygems
api_key:
Expand All @@ -10,5 +19,5 @@ deploy:
on:
tags: true
repo: iMacTia/lograge-sql
rvm: 2.5
rvm: 2.6

2 changes: 2 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

source 'https://rubygems.org'

# Specify your gem's dependencies in lograge-sql.gemspec
Expand Down
4 changes: 3 additions & 1 deletion Rakefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# frozen_string_literal: true

require 'bundler/gem_tasks'
require 'rspec/core/rake_task'

RSpec::Core::RakeTask.new(:spec)

task :default => :spec
task default: :spec
1 change: 1 addition & 0 deletions bin/console
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/usr/bin/env ruby
# frozen_string_literal: true

require 'bundler/setup'
require 'lograge/sql'
Expand Down
7 changes: 7 additions & 0 deletions gemfiles/lograge10.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# frozen_string_literal: true

source 'https://rubygems.org'

gem 'lograge', '~> 0.10.0'

gemspec path: '../'
7 changes: 7 additions & 0 deletions gemfiles/lograge11.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# frozen_string_literal: true

source 'https://rubygems.org'

gem 'lograge', '~> 0.11.0'

gemspec path: '../'
13 changes: 6 additions & 7 deletions lib/lograge/sql.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
# frozen_string_literal: true

require 'lograge/sql/version'

module Lograge
# Main gem module
module Sql

class << self

# Format SQL log
attr_accessor :formatter
# Extract information from SQL event
Expand All @@ -20,21 +21,19 @@ def setup(config)

# By default, the output is a concatenated string of all extracted events
def default_formatter
Proc.new do |sql_queries|
proc do |sql_queries|
%('#{sql_queries.join("\n")}')
end
end

# By default, only extract values required for the default_formatter and
# By default, only extract values required for the default_formatter and
# already convert to a string
def default_extract_event
Proc.new do |event|
proc do |event|
"#{event.payload[:name]} (#{event.duration.to_f.round(2)}) #{event.payload[:sql]}"
end
end

end

end
end

Expand Down
9 changes: 9 additions & 0 deletions lib/lograge/sql/extension.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
# frozen_string_literal: true

module Lograge
module Sql
# Module used to extend Lograge
module Extension
# Overrides `Lograge::RequestLogSubscriber#extract_request` do add SQL queries
def extract_request(event, payload)
super.merge!(extract_sql_queries)
end

# Collects all SQL queries stored in the Thread during request processing
def extract_sql_queries
sql_queries = Thread.current[:lograge_sql_queries]
return {} unless sql_queries
Expand All @@ -20,10 +25,14 @@ def extract_sql_queries
end

module Lograge
# Log subscriber to replace ActiveRecord's default one
class ActiveRecordLogSubscriber < ActiveSupport::LogSubscriber
# Every time there's an SQL query, stores it into the Thread.
# They'll later be access from the RequestLogSubscriber.
def sql(event)
ActiveRecord::LogSubscriber.runtime += event.duration
return if event.payload[:name] == 'SCHEMA'

Thread.current[:lograge_sql_queries] ||= []
Thread.current[:lograge_sql_queries] << Lograge::Sql.extract_event.call(event)
end
Expand Down
5 changes: 4 additions & 1 deletion lib/lograge/sql/railtie.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
# frozen_string_literal: true

require 'rails/railtie'
require 'active_support/ordered_options'

module Lograge
module Sql
# Railtie to automatically setup in Rails
class Railtie < Rails::Railtie
# To ensure that configuration is not nil when initialise Lograge::Sql.setup
config.lograge_sql = ActiveSupport::OrderedOptions.new
Expand All @@ -12,4 +15,4 @@ class Railtie < Rails::Railtie
end
end
end
end
end
3 changes: 3 additions & 0 deletions lib/lograge/sql/version.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# frozen_string_literal: true

module Lograge
module Sql
# Gem version
VERSION = '0.3.0'
end
end
13 changes: 8 additions & 5 deletions lograge-sql.gemspec
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
# frozen_string_literal: true

lib = File.expand_path('lib', __dir__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'lograge/sql/version'

Expand All @@ -9,8 +10,8 @@ Gem::Specification.new do |spec|
spec.authors = ['Mattia Giuffrida']
spec.email = ['[email protected]']

spec.summary = %q{An extension for Lograge to log SQL queries}
spec.description = %q{An extension for Lograge to log SQL queries}
spec.summary = 'An extension for Lograge to log SQL queries'
spec.description = 'An extension for Lograge to log SQL queries'
spec.homepage = 'https://github.com/iMacTia/lograge-sql'
spec.license = 'MIT'

Expand All @@ -19,10 +20,12 @@ Gem::Specification.new do |spec|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
spec.require_paths = ['lib']

spec.add_runtime_dependency 'lograge', '~> 0.4'
spec.add_runtime_dependency 'activerecord', '>= 4', '< 6.0'
spec.add_runtime_dependency 'lograge', '~> 0.4'

spec.add_development_dependency 'bundler', '~> 1.0'
spec.add_development_dependency 'rake', '~> 10.0'
spec.add_development_dependency 'rspec', '~> 3.0'
spec.add_development_dependency 'rubocop'
spec.add_development_dependency 'rubocop-performance'
end
2 changes: 2 additions & 0 deletions spec/lograge/sql_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'spec_helper'

describe Lograge::Sql do
Expand Down
4 changes: 3 additions & 1 deletion spec/spec_helper.rb
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
# frozen_string_literal: true

$LOAD_PATH.unshift File.expand_path('../lib', __dir__)
require 'lograge/sql'

0 comments on commit 678964b

Please sign in to comment.