pp_sql 0.2.8 → 0.2.9

Sign up to get free protection for your applications and to get access to all the features.
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