pp_sql 0.2.8 → 0.2.9

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.
Files changed (6) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +24 -10
  3. data/Rakefile +4 -8
  4. data/lib/pp_sql.rb +40 -32
  5. data/lib/pp_sql/version.rb +3 -1
  6. metadata +138 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c9bddbbd1dba6cf2d777fe5171befcf71d5bec38
4
- data.tar.gz: 74a50e07848f14e54ba2e8425830857e8e0388fc
2
+ SHA256:
3
+ metadata.gz: 195ee7e1114d5ba688ae06a9b1a2e445d7bf152332c270a61a754856856630f1
4
+ data.tar.gz: b1a36b7dedbed342094fc01a63897ae15fb92c19d717abcfe9dd7a78a8e1320f
5
5
  SHA512:
6
- metadata.gz: 4c632dc75d1a303d136f0cf29c4902ed9188a086d475dfa8d33541c9364fdb53f6e693eae1630eddacda43298edf43db9fb8d3e55b4d3105f21c4fcd0d9152b7
7
- data.tar.gz: 115c957bf9c2ecc3c8b71226d0d9288c6506ec1fb9bce938d685a0d2b4be485b4e0b79f535266bae1e096393627673e9fcc34833a38be1a5e2ae3c1b9d59650a
6
+ metadata.gz: f384091566d5227ebc92d82f24b901d93a84cda413eefdc49d29583c54b6c7e94bfdec7cc7bd3c90ecd68ff47d97ae85236093ec5b7268ceeddbe04b1c1b3ea9
7
+ data.tar.gz: 1a9160498ac0a8708ea88114ad3f51c9fca3863a9d9f09a8063d5bf84c1dab9b6419f24287a06054f6e0bcb80138a63d3da57db5efd3691293003fbf97d5d72f
data/README.md CHANGED
@@ -1,31 +1,43 @@
1
- # PpSql
1
+ # PpSql [![Build Status](https://travis-ci.org/kvokka/pp_sql.svg?branch=master)](https://travis-ci.org/kvokka/pp_sql)
2
2
 
3
- Replace standard `ActiveRecord#to_sql` method with [`anbt-sql-formatter`](https://github.com/sonota88/anbt-sql-formatter)
4
- gem for pretty SQL code output in console. Rails log will be formatted also. Example output:
3
+ Replace standard `ActiveRecord#to_sql` method with
4
+ [`anbt-sql-formatter`](https://github.com/sonota88/anbt-sql-formatter)
5
+ gem for pretty SQL code output in console. Rails log will be formatted also.
6
+ Example output:
5
7
 
6
- ![log](http://savepic.ru/12566050.png)
8
+ ![log](https://raw.githubusercontent.com/kvokka/pp_sql/master/screenshots/log.png)
7
9
 
8
10
  Or in console
9
11
 
10
- ![console] (http://savepic.ru/12578341.png)
12
+ ![console](https://raw.githubusercontent.com/kvokka/pp_sql/master/screenshots/console.png)
11
13
 
12
14
  ## Require
13
15
 
14
16
  Ruby 2.2+
15
17
 
18
+ ## Rails
19
+
20
+ Rails 4.0+ (optional), will be injected automatically
21
+
16
22
  ## Usage
17
23
 
18
24
  ```
19
25
  Post.first.to_sql
20
26
  ```
21
27
 
22
- If you need to use it in some custom strings, you may include this functionality with
28
+ for easy and clean usage with custom string you can use build-in refinement:
23
29
 
24
30
  ```
25
- String.send :include, PpSql::ToSqlBeautify
31
+ using PpSql::ToSqlBeautifyRefinement
26
32
  ```
27
33
 
28
- and use formatter with any String.
34
+ Or if you need to use it wider
35
+
36
+ ```
37
+ class MyAwesomeDecoratedString < String
38
+ include PpSql::ToSqlBeautify
39
+ end
40
+ ```
29
41
 
30
42
  ## Installation
31
43
 
@@ -46,7 +58,9 @@ like `puts User.all.to_sql`, or use `User.all.pp_sql`.
46
58
 
47
59
  ## With Rails
48
60
 
49
- If you do not want to rewrite default `#to_sql` method you may specify `PpSql.rewrite_to_sql_method=false` in initializers.
61
+ If you do not want to rewrite default `#to_sql` method you may specify
62
+ `PpSql.rewrite_to_sql_method=false` in initializers.
50
63
 
51
64
  ## License
52
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
65
+ The gem is available as open source under the terms of the
66
+ [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile CHANGED
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rubygems'
1
4
  begin
2
5
  require 'bundler/setup'
3
6
  rescue LoadError
@@ -14,21 +17,14 @@ RDoc::Task.new(:rdoc) do |rdoc|
14
17
  rdoc.rdoc_files.include('lib/**/*.rb')
15
18
  end
16
19
 
17
-
18
-
19
-
20
-
21
-
22
20
  require 'bundler/gem_tasks'
23
21
 
24
22
  require 'rake/testtask'
25
23
 
26
24
  Rake::TestTask.new(:test) do |t|
27
- t.libs << 'lib'
28
- t.libs << 'test'
25
+ t.libs << %w[test lib]
29
26
  t.pattern = 'test/**/*_test.rb'
30
27
  t.verbose = false
31
28
  end
32
29
 
33
-
34
30
  task default: :test
@@ -1,38 +1,52 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PpSql
2
4
  # if you do not want to rewrite AR native method #to_sql
3
5
  # you may switch this setting to false in initializer
4
- mattr_accessor :rewrite_to_sql_method
6
+ class << self
7
+ attr_accessor :rewrite_to_sql_method
8
+ end
5
9
  self.rewrite_to_sql_method = true
10
+
6
11
  module Formatter
7
12
  private
8
13
 
9
14
  def _sql_formatter
10
- return @_sql_formatter if @_sql_formatter
11
- require "anbt-sql-formatter/formatter"
15
+ return @_sql_formatter if defined?(@_sql_formatter) && @_sql_formatter
16
+ require 'anbt-sql-formatter/formatter'
12
17
  rule = AnbtSql::Rule.new
13
18
  rule.keyword = AnbtSql::Rule::KEYWORD_UPPER_CASE
14
- %w(count sum substr date).each { |func_name| rule.function_names << func_name.upcase }
15
- rule.indent_string = " "
19
+ %w[count sum substr date].each { |func_name| rule.function_names << func_name.upcase }
20
+ rule.indent_string = ' '
16
21
  @_sql_formatter = AnbtSql::Formatter.new(rule)
17
22
  end
18
23
  end
24
+
19
25
  module ToSqlBeautify
20
- include Formatter
21
26
  def to_sql
27
+ return self unless ::PpSql.rewrite_to_sql_method || defined?(super)
22
28
  return super unless ::PpSql.rewrite_to_sql_method
23
- _sql_formatter.format(defined?(super) ? super.dup : self)
29
+ extend Formatter
30
+ _sql_formatter.format(defined?(super) ? super.dup : dup)
24
31
  end
25
32
 
26
33
  def pp_sql
27
34
  puts to_sql
28
35
  end
29
36
  end
37
+
38
+ module ToSqlBeautifyRefinement
39
+ refine String do
40
+ include PpSql::ToSqlBeautify
41
+ end
42
+ end
43
+
30
44
  module Rails5PpSqlExtraction
31
45
  # export from Rails 5 with for Rails 4.2+ versions
32
46
  private
33
47
 
34
48
  def colorize_payload_name(name, payload_name)
35
- if payload_name.blank? || payload_name == "SQL" # SQL vs Model Load/Exists
49
+ if payload_name.blank? || payload_name == 'SQL' # SQL vs Model Load/Exists
36
50
  color(name, ActiveSupport::LogSubscriber::MAGENTA, true)
37
51
  else
38
52
  color(name, ActiveSupport::LogSubscriber::CYAN, true)
@@ -41,41 +55,35 @@ module PpSql
41
55
 
42
56
  def sql_color(sql)
43
57
  case sql
44
- when /\A\s*rollback/mi
45
- ActiveSupport::LogSubscriber::RED
46
- when /select .*for update/mi, /\A\s*lock/mi
47
- ActiveSupport::LogSubscriber::WHITE
48
- when /\A\s*select/i
49
- ActiveSupport::LogSubscriber::BLUE
50
- when /\A\s*insert/i
51
- ActiveSupport::LogSubscriber::GREEN
52
- when /\A\s*update/i
53
- ActiveSupport::LogSubscriber::YELLOW
54
- when /\A\s*delete/i
55
- ActiveSupport::LogSubscriber::RED
56
- when /transaction\s*\Z/i
57
- ActiveSupport::LogSubscriber::CYAN
58
- else
59
- ActiveSupport::LogSubscriber::MAGENTA
58
+ when /\A\s*rollback/mi then ActiveSupport::LogSubscriber::RED
59
+ when /select .*for update/mi, /\A\s*lock/mi then ActiveSupport::LogSubscriber::WHITE
60
+ when /\A\s*select/i then ActiveSupport::LogSubscriber::BLUE
61
+ when /\A\s*insert/i then ActiveSupport::LogSubscriber::GREEN
62
+ when /\A\s*update/i then ActiveSupport::LogSubscriber::YELLOW
63
+ when /\A\s*delete/i then ActiveSupport::LogSubscriber::RED
64
+ when /transaction\s*\Z/i then ActiveSupport::LogSubscriber::CYAN
65
+ else ActiveSupport::LogSubscriber::MAGENTA
60
66
  end
61
67
  end
62
68
  end
63
-
69
+
64
70
  module LogSubscriberPrettyPrint
65
71
  include Formatter
66
72
  def sql(event)
67
- e= event.dup
73
+ e = event.dup
68
74
  e.payload[:sql] = _sql_formatter.format(e.payload[:sql].dup)
69
75
  super e
70
76
  end
71
77
  end
72
78
 
73
- class Railtie < Rails::Railtie
74
- initializer "pp_sql.override_to_sql" do
75
- ActiveSupport.on_load(:active_record) do
76
- ActiveRecord::Relation.send(:prepend, ToSqlBeautify)
77
- ActiveRecord::LogSubscriber.send(:prepend, LogSubscriberPrettyPrint)
78
- ActiveRecord::LogSubscriber.send(:include, Rails5PpSqlExtraction) if Rails::VERSION::MAJOR <= 4
79
+ if defined?(::Rails::Railtie)
80
+ class Railtie < Rails::Railtie
81
+ initializer 'pp_sql.override_to_sql' do
82
+ ActiveSupport.on_load(:active_record) do
83
+ ActiveRecord::Relation.send(:prepend, ToSqlBeautify)
84
+ ActiveRecord::LogSubscriber.send(:prepend, LogSubscriberPrettyPrint)
85
+ ActiveRecord::LogSubscriber.send(:include, Rails5PpSqlExtraction) if Rails::VERSION::MAJOR <= 4
86
+ end
79
87
  end
80
88
  end
81
89
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PpSql
2
- VERSION = '0.2.8'
4
+ VERSION = '0.2.9'
3
5
  end
metadata CHANGED
@@ -1,46 +1,172 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pp_sql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kvokka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-13 00:00:00.000000000 Z
11
+ date: 2018-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: anbt-sql-formatter
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.0.5
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.5
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rails
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
31
  - - ">="
18
32
  - !ruby/object:Gem::Version
19
- version: 4.0.0
33
+ version: '0'
20
34
  type: :runtime
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - ">="
25
39
  - !ruby/object:Gem::Version
26
- version: 4.0.0
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
- name: anbt-sql-formatter
42
+ name: appraisal
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - "~>"
45
+ - - ">="
32
46
  - !ruby/object:Gem::Version
33
- version: 0.0.5
34
- type: :runtime
47
+ version: '0'
48
+ type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - "~>"
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
- version: 0.0.5
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest-focus
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: minitest-reporters
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: overcommit
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: reek
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: sqlite3
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
41
167
  description: Helps to save your eyes, when reading hardcore SQL requests in console
42
168
  email:
43
- - root_p@mail.ru
169
+ - kvokka@yahoo.com
44
170
  executables: []
45
171
  extensions: []
46
172
  extra_rdoc_files: []
@@ -70,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
196
  version: '0'
71
197
  requirements: []
72
198
  rubyforge_project:
73
- rubygems_version: 2.5.2
199
+ rubygems_version: 2.7.3
74
200
  signing_key:
75
201
  specification_version: 4
76
202
  summary: Beautify SQL output of ActiveRecord#to_sql