lograge-sql 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.travis.yml +12 -2
 - data/README.md +38 -0
 - data/lib/lograge/sql.rb +35 -0
 - data/lib/lograge/sql/extension.rb +2 -2
 - data/lib/lograge/sql/railtie.rb +15 -0
 - data/lib/lograge/sql/version.rb +1 -1
 - metadata +4 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 6c781f369bfdc3b5ee7fa14fe03146c929e67a90b3558933e88d520d1908324e
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: c498398d6d5089d9f8362e1f0ab0fec680cfdd80e397195ce75ce6a6860ab951
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 265b36d72f2b0a9f6fcdd0f4af6cd07e04088df14be819e3499351230ff314cec3efa07443a2d24d7b0136df9389fb16c0041fae73b1930b01eaa4466c6c8254
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 623aeb11fcb1b9633b72b54e5d001d84ac558f2fea2fee1fdb7eb43e662e0b756ab2dfdfc99abb55749a657844b51caec94ea8609e2a4122d7cd503289a50d9a
         
     | 
    
        data/.travis.yml
    CHANGED
    
    | 
         @@ -1,4 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            language: ruby
         
     | 
| 
       2 
2 
     | 
    
         
             
            rvm:
         
     | 
| 
       3 
     | 
    
         
            -
              - 2. 
     | 
| 
       4 
     | 
    
         
            -
            before_install: gem install bundler -v 1. 
     | 
| 
      
 3 
     | 
    
         
            +
              - 2.5
         
     | 
| 
      
 4 
     | 
    
         
            +
            before_install: gem install bundler -v 1.16.2
         
     | 
| 
      
 5 
     | 
    
         
            +
            deploy:
         
     | 
| 
      
 6 
     | 
    
         
            +
              provider: rubygems
         
     | 
| 
      
 7 
     | 
    
         
            +
              api_key:
         
     | 
| 
      
 8 
     | 
    
         
            +
                secure: xlc4BM+5ljo4cO2FC71KbhbVGVYd3NMxhZPat/Y37vo6b5/I01D+Z+K84azMvhIZa+O17cA56FGqT6P0XYfcjZVnYzixpyRlbffKBGNPcIFj2UklWk2BDOojezHPEQnbR2f0jE2+8jHtAb9qyoBTbTlvsW3+svd76+53TxMW1PgGF9+1xdtlEumF1q+IYRL+5TzDLk9GyQ+3RmVd9KBVvQIxxUpn4COJohmQWnv98ZzluX4I/QUt3k4o+etUINPewyg3S+VNP0u+K9HGkY3TL8OpUbCS3Syr3OydwzgpXIBlW+kWVez5/qZn3pd6oSpNEUF9Mh3NhaVsDacFSh6XgGNgww+isazyAROsledK2GsEOH0Hi6gpia/Ny5cD5TFAiGshMcUIb2K4roI3AW9kJ2e59hoC+QvPy64IybO/dhaKcxwX8F4qq3Fk/8EzQV5eOTq0Iai5aYNJaGZUqHV/X4DiMwDk/JoyQVYE+2CMF/PlZIFV4LuegDArVXYh5w3Qo9vYDfNp7Hfv0w5XgpEqAhk+Dabl+BlVhzSM/Cf28i6OVAhLURnGMNKhQEi3/4EusaM/cOQlM5QKWweAPfOwDKMFUoj9+Rtr0FfSyNzerG9dlGuzEKOlqq+XuOQ7RfDUV4+bn2PwbYo5XwMKz1Y8FWUZTz6l14miaw8Yq7U0GU8=
         
     | 
| 
      
 9 
     | 
    
         
            +
              gem: lograge-sql
         
     | 
| 
      
 10 
     | 
    
         
            +
              on:
         
     | 
| 
      
 11 
     | 
    
         
            +
                tags: true
         
     | 
| 
      
 12 
     | 
    
         
            +
                repo: iMacTia/lograge-sql
         
     | 
| 
      
 13 
     | 
    
         
            +
                rvm: 2.5
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -22,6 +22,44 @@ In order to enable SQL logging in your application, you'll simply need to add th 
     | 
|
| 
       22 
22 
     | 
    
         
             
            require 'lograge/sql/extension'
         
     | 
| 
       23 
23 
     | 
    
         
             
            ```
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
      
 25 
     | 
    
         
            +
            ## Customization
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            By default, the format is a string concatenation of the query name, the query duration and the query itself joined by `\n` newline:
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            ```
         
     | 
| 
      
 30 
     | 
    
         
            +
            method=GET path=/mypath format=html ...
         
     | 
| 
      
 31 
     | 
    
         
            +
            Object Load (0.42) SELECT "objects.*" FROM "objects"
         
     | 
| 
      
 32 
     | 
    
         
            +
            Associations Load (0.42) SELECT "associations.*" FROM "associations" WHERE "associations"."object_id" = "$1"
         
     | 
| 
      
 33 
     | 
    
         
            +
            ```
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            However, having `Lograge::Formatters::Json.new`, the relevant output is 
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            ```json
         
     | 
| 
      
 38 
     | 
    
         
            +
            {
         
     | 
| 
      
 39 
     | 
    
         
            +
                "sql_queries": "name1 ({duration1}) {query1}\nname2 ({duration2}) query2 ...",
         
     | 
| 
      
 40 
     | 
    
         
            +
                "sql_queries_count": 3
         
     | 
| 
      
 41 
     | 
    
         
            +
            }
         
     | 
| 
      
 42 
     | 
    
         
            +
            ```
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            To customize the output:
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 47 
     | 
    
         
            +
            # config/initializers/lograge.rb
         
     | 
| 
      
 48 
     | 
    
         
            +
            Rails.application.configure do
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              # Instead of extracting event as Strings, extract as Hash. You can also extract
         
     | 
| 
      
 51 
     | 
    
         
            +
              # additional fields to add to the formatter
         
     | 
| 
      
 52 
     | 
    
         
            +
              config.lograge_sql.extract_event = Proc.new do |event|
         
     | 
| 
      
 53 
     | 
    
         
            +
                { name: event.payload[:name], duration: event.duration.to_f.round(2), sql: event.payload[:sql] }
         
     | 
| 
      
 54 
     | 
    
         
            +
              end
         
     | 
| 
      
 55 
     | 
    
         
            +
              # Format the array of extracted events
         
     | 
| 
      
 56 
     | 
    
         
            +
              config.lograge_sql.formatter = Proc.new do |sql_queries|
         
     | 
| 
      
 57 
     | 
    
         
            +
                sql_queries
         
     | 
| 
      
 58 
     | 
    
         
            +
              end
         
     | 
| 
      
 59 
     | 
    
         
            +
            end
         
     | 
| 
      
 60 
     | 
    
         
            +
            ```
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
       25 
63 
     | 
    
         
             
            ## Contributing
         
     | 
| 
       26 
64 
     | 
    
         | 
| 
       27 
65 
     | 
    
         
             
            Bug reports and pull requests are welcome on GitHub at https://github.com/iMacTia/lograge-sql.
         
     | 
    
        data/lib/lograge/sql.rb
    CHANGED
    
    | 
         @@ -2,6 +2,41 @@ require 'lograge/sql/version' 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module Lograge
         
     | 
| 
       4 
4 
     | 
    
         
             
              module Sql
         
     | 
| 
      
 5 
     | 
    
         
            +
                
         
     | 
| 
      
 6 
     | 
    
         
            +
                class << self
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  # Format SQL log
         
     | 
| 
      
 9 
     | 
    
         
            +
                  attr_accessor :formatter
         
     | 
| 
      
 10 
     | 
    
         
            +
                  # Extract information from SQL event
         
     | 
| 
      
 11 
     | 
    
         
            +
                  attr_accessor :extract_event
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                  # Initialise configuration with fallback to default values
         
     | 
| 
      
 14 
     | 
    
         
            +
                  def setup(config)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    Lograge::Sql.formatter     = config.formatter     || default_formatter
         
     | 
| 
      
 16 
     | 
    
         
            +
                    Lograge::Sql.extract_event = config.extract_event || default_extract_event
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                  private
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                  # By default, the output is a concatenated string of all extracted events
         
     | 
| 
      
 22 
     | 
    
         
            +
                  def default_formatter
         
     | 
| 
      
 23 
     | 
    
         
            +
                    Proc.new do |sql_queries|
         
     | 
| 
      
 24 
     | 
    
         
            +
                      %('#{sql_queries.join("\n")}')
         
     | 
| 
      
 25 
     | 
    
         
            +
                    end
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  # By default, only extract values required for the default_formatter and 
         
     | 
| 
      
 29 
     | 
    
         
            +
                  # already convert to a string
         
     | 
| 
      
 30 
     | 
    
         
            +
                  def default_extract_event
         
     | 
| 
      
 31 
     | 
    
         
            +
                    Proc.new do |event|
         
     | 
| 
      
 32 
     | 
    
         
            +
                      "#{event.payload[:name]} (#{event.duration.to_f.round(2)}) #{event.payload[:sql]}"
         
     | 
| 
      
 33 
     | 
    
         
            +
                    end
         
     | 
| 
      
 34 
     | 
    
         
            +
                  end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
       5 
37 
     | 
    
         | 
| 
       6 
38 
     | 
    
         
             
              end
         
     | 
| 
       7 
39 
     | 
    
         
             
            end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            # Rails specific configuration
         
     | 
| 
      
 42 
     | 
    
         
            +
            require 'lograge/sql/railtie' if defined?(Rails)
         
     | 
| 
         @@ -11,7 +11,7 @@ module Lograge 
     | 
|
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
                    Thread.current[:lograge_sql_queries] = nil
         
     | 
| 
       13 
13 
     | 
    
         
             
                    {
         
     | 
| 
       14 
     | 
    
         
            -
                      sql_queries:  
     | 
| 
      
 14 
     | 
    
         
            +
                      sql_queries: Lograge::Sql.formatter.call(sql_queries),
         
     | 
| 
       15 
15 
     | 
    
         
             
                      sql_queries_count: sql_queries.length
         
     | 
| 
       16 
16 
     | 
    
         
             
                    }
         
     | 
| 
       17 
17 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -25,7 +25,7 @@ module Lograge 
     | 
|
| 
       25 
25 
     | 
    
         
             
                  ActiveRecord::LogSubscriber.runtime += event.duration
         
     | 
| 
       26 
26 
     | 
    
         
             
                  return if event.payload[:name] == 'SCHEMA'
         
     | 
| 
       27 
27 
     | 
    
         
             
                  Thread.current[:lograge_sql_queries] ||= []
         
     | 
| 
       28 
     | 
    
         
            -
                  Thread.current[:lograge_sql_queries] <<  
     | 
| 
      
 28 
     | 
    
         
            +
                  Thread.current[:lograge_sql_queries] << Lograge::Sql.extract_event.call(event)
         
     | 
| 
       29 
29 
     | 
    
         
             
                end
         
     | 
| 
       30 
30 
     | 
    
         
             
              end
         
     | 
| 
       31 
31 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rails/railtie'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'active_support/ordered_options'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Lograge
         
     | 
| 
      
 5 
     | 
    
         
            +
              module Sql
         
     | 
| 
      
 6 
     | 
    
         
            +
                class Railtie < Rails::Railtie
         
     | 
| 
      
 7 
     | 
    
         
            +
                  # To ensure that configuration is not nil when initialise Lograge::Sql.setup
         
     | 
| 
      
 8 
     | 
    
         
            +
                  config.lograge_sql = ActiveSupport::OrderedOptions.new
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  config.after_initialize do |app|
         
     | 
| 
      
 11 
     | 
    
         
            +
                    Lograge::Sql.setup(app.config.lograge_sql)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/lograge/sql/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: lograge-sql
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.3.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Mattia Giuffrida
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2018- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2018-11-07 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: lograge
         
     | 
| 
         @@ -103,6 +103,7 @@ files: 
     | 
|
| 
       103 
103 
     | 
    
         
             
            - bin/setup
         
     | 
| 
       104 
104 
     | 
    
         
             
            - lib/lograge/sql.rb
         
     | 
| 
       105 
105 
     | 
    
         
             
            - lib/lograge/sql/extension.rb
         
     | 
| 
      
 106 
     | 
    
         
            +
            - lib/lograge/sql/railtie.rb
         
     | 
| 
       106 
107 
     | 
    
         
             
            - lib/lograge/sql/version.rb
         
     | 
| 
       107 
108 
     | 
    
         
             
            - lograge-sql.gemspec
         
     | 
| 
       108 
109 
     | 
    
         
             
            homepage: https://github.com/iMacTia/lograge-sql
         
     | 
| 
         @@ -125,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       125 
126 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       126 
127 
     | 
    
         
             
            requirements: []
         
     | 
| 
       127 
128 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       128 
     | 
    
         
            -
            rubygems_version: 2.7. 
     | 
| 
      
 129 
     | 
    
         
            +
            rubygems_version: 2.7.8
         
     | 
| 
       129 
130 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       130 
131 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       131 
132 
     | 
    
         
             
            summary: An extension for Lograge to log SQL queries
         
     |