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.
- checksums.yaml +5 -5
- data/README.md +24 -10
- data/Rakefile +4 -8
- data/lib/pp_sql.rb +40 -32
- data/lib/pp_sql/version.rb +3 -1
- metadata +138 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 195ee7e1114d5ba688ae06a9b1a2e445d7bf152332c270a61a754856856630f1
|
4
|
+
data.tar.gz: b1a36b7dedbed342094fc01a63897ae15fb92c19d717abcfe9dd7a78a8e1320f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f384091566d5227ebc92d82f24b901d93a84cda413eefdc49d29583c54b6c7e94bfdec7cc7bd3c90ecd68ff47d97ae85236093ec5b7268ceeddbe04b1c1b3ea9
|
7
|
+
data.tar.gz: 1a9160498ac0a8708ea88114ad3f51c9fca3863a9d9f09a8063d5bf84c1dab9b6419f24287a06054f6e0bcb80138a63d3da57db5efd3691293003fbf97d5d72f
|
data/README.md
CHANGED
@@ -1,31 +1,43 @@
|
|
1
|
-
# PpSql
|
1
|
+
# PpSql [](https://travis-ci.org/kvokka/pp_sql)
|
2
2
|
|
3
|
-
Replace standard `ActiveRecord#to_sql` method with
|
4
|
-
|
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
|
-

|
7
9
|
|
8
10
|
Or in console
|
9
11
|
|
10
|
-
![console]
|
12
|
+

|
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
|
-
|
28
|
+
for easy and clean usage with custom string you can use build-in refinement:
|
23
29
|
|
24
30
|
```
|
25
|
-
|
31
|
+
using PpSql::ToSqlBeautifyRefinement
|
26
32
|
```
|
27
33
|
|
28
|
-
|
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
|
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
|
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 <<
|
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
|
data/lib/pp_sql.rb
CHANGED
@@ -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
|
-
|
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
|
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
|
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
|
-
|
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 ==
|
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
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
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=
|
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
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
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
|
data/lib/pp_sql/version.rb
CHANGED
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.
|
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:
|
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:
|
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:
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
42
|
+
name: appraisal
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
|
-
- - "
|
45
|
+
- - ">="
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0
|
34
|
-
type: :
|
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
|
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
|
-
-
|
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.
|
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
|