rails_sql_prettifier 5.0.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 +7 -0
- data/.byebug_history +36 -0
- data/.gitignore +11 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +7 -0
- data/CHANGELOG.md +0 -0
- data/Gemfile +5 -0
- data/LICENSE.txt +21 -0
- data/README.md +160 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/err_now.png +0 -0
- data/err_was.png +0 -0
- data/lib/benchmark/cat.rb +34 -0
- data/lib/benchmark/gsub.rb +34 -0
- data/lib/benchmark/txt +748 -0
- data/lib/generators/niceql/install_generator.rb +14 -0
- data/lib/generators/templates/niceql_initializer.rb +11 -0
- data/lib/rails_sql_prettifier/version.rb +3 -0
- data/lib/rails_sql_prettifier.rb +89 -0
- data/rails_sql_prettifier.gemspec +46 -0
- data/to_niceql.png +0 -0
- metadata +193 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
module Niceql
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
source_root File.expand_path("../../templates", __FILE__)
|
5
|
+
desc "Creates Niceql initializer for your application"
|
6
|
+
|
7
|
+
def copy_initializer
|
8
|
+
template "niceql_initializer.rb", "config/initializers/niceql.rb"
|
9
|
+
|
10
|
+
puts "Install complete!"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Niceql.configure do |c|
|
2
|
+
# You can adjust pg_adapter in prooduction at your own risk!
|
3
|
+
# If you need it in production use exec_niceql
|
4
|
+
# default: false
|
5
|
+
# c.pg_adapter_with_nicesql = Rails.env.development?
|
6
|
+
|
7
|
+
# this are default settings, change it to your project needs
|
8
|
+
# c.indentation_base = 2
|
9
|
+
# c.open_bracket_is_newliner = false
|
10
|
+
# c.prettify_active_record_log_output = false
|
11
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require "rails_sql_prettifier/version"
|
2
|
+
require 'active_record'
|
3
|
+
require "niceql"
|
4
|
+
|
5
|
+
module RailsSQLPrettifier
|
6
|
+
include Niceql
|
7
|
+
|
8
|
+
module ArExtentions
|
9
|
+
def exec_niceql
|
10
|
+
connection.execute( to_niceql )
|
11
|
+
end
|
12
|
+
|
13
|
+
def to_niceql
|
14
|
+
Niceql::Prettifier.prettify_sql(to_sql, false)
|
15
|
+
end
|
16
|
+
|
17
|
+
def niceql( colorize = true )
|
18
|
+
puts Niceql::Prettifier.prettify_sql( to_sql, colorize )
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
module PostgresAdapterNiceQL
|
24
|
+
def exec_query(sql, name = "SQL", binds = [], prepare: false)
|
25
|
+
# replacing sql with prettified sql, thats all
|
26
|
+
super( Niceql::Prettifier.prettify_sql(sql, false), name, binds, prepare: prepare )
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
module AbstractAdapterLogPrettifier
|
31
|
+
def log( sql, *args, &block )
|
32
|
+
# \n need to be placed because AR log will start with action description + time info.
|
33
|
+
# rescue sql - just to be sure Prettifier wouldn't break production
|
34
|
+
formatted_sql = "\n" + Niceql::Prettifier.prettify_sql(sql) rescue sql
|
35
|
+
super( formatted_sql, *args, &block )
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
module ErrorExt
|
40
|
+
def to_s
|
41
|
+
# older rails version do not provide sql as a standalone query, instead they
|
42
|
+
# deliver joined message
|
43
|
+
Niceql.config.prettify_pg_errors ? Niceql::Prettifier.prettify_err(super, try(:sql) ) : super
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
module ARNiceQLConfig
|
48
|
+
extend ActiveSupport::Concern
|
49
|
+
|
50
|
+
included do
|
51
|
+
attr_accessor :pg_adapter_with_nicesql,
|
52
|
+
:prettify_active_record_log_output,
|
53
|
+
:prettify_pg_errors
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
def ar_using_pg_adapter?
|
58
|
+
adapter = ActiveRecord::Base.try(:connection_db_config).try(:adapter) ||
|
59
|
+
ActiveRecord::Base.try(:connection_config)&.with_indifferent_access&.dig(:adapter)
|
60
|
+
|
61
|
+
adapter == 'postgresql'
|
62
|
+
end
|
63
|
+
|
64
|
+
def initialize
|
65
|
+
super
|
66
|
+
self.pg_adapter_with_nicesql = false
|
67
|
+
self.prettify_active_record_log_output = false
|
68
|
+
self.prettify_pg_errors = ar_using_pg_adapter?
|
69
|
+
end
|
70
|
+
|
71
|
+
module ClassMethods
|
72
|
+
def configure
|
73
|
+
super
|
74
|
+
|
75
|
+
::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.include(PostgresAdapterNiceQL) if config.pg_adapter_with_nicesql
|
76
|
+
|
77
|
+
::ActiveRecord::ConnectionAdapters::AbstractAdapter.prepend( AbstractAdapterLogPrettifier ) if config.prettify_active_record_log_output
|
78
|
+
|
79
|
+
::ActiveRecord::StatementInvalid.include( Niceql::ErrorExt ) if config.prettify_pg_errors && config.ar_using_pg_adapter?
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
[::ActiveRecord::Relation,
|
85
|
+
::Arel::TreeManager,
|
86
|
+
::Arel::Nodes::Node].each { |klass| klass.send(:include, ArExtentions) }
|
87
|
+
|
88
|
+
NiceQLConfig.include( ARNiceQLConfig )
|
89
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require "rails_sql_prettifier/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "rails_sql_prettifier"
|
8
|
+
spec.version = RailsSQLPrettifier::VERSION
|
9
|
+
spec.authors = ["alekseyl"]
|
10
|
+
spec.email = ["leshchuk@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{This is an ActiveRecord integration for the SQL prettifier gem niceql. }
|
13
|
+
spec.description = %q{This is an ActiveRecord integration for the SQL prettifier gem niceql. }
|
14
|
+
spec.homepage = "https://github.com/alekseyl/rails_sql_prettifier"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
18
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
19
|
+
if spec.respond_to?(:metadata)
|
20
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
21
|
+
else
|
22
|
+
raise "RubyGems 2.0 or newer is required to protect against " \
|
23
|
+
"public gem pushes."
|
24
|
+
end
|
25
|
+
|
26
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
27
|
+
f.match(%r{^(test|spec|features)/})
|
28
|
+
end
|
29
|
+
spec.bindir = "exe"
|
30
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
|
+
spec.require_paths = ["lib"]
|
32
|
+
|
33
|
+
spec.required_ruby_version = '>= 2.4'
|
34
|
+
spec.add_dependency "niceql", '>= 0.5.1'
|
35
|
+
|
36
|
+
spec.add_development_dependency "activerecord", "< 6.0"
|
37
|
+
|
38
|
+
spec.add_development_dependency "bundler", ">= 1"
|
39
|
+
spec.add_development_dependency "rake", ">= 12.3.3"
|
40
|
+
spec.add_development_dependency "minitest", "~> 5.0"
|
41
|
+
|
42
|
+
spec.add_development_dependency "differ"
|
43
|
+
spec.add_development_dependency "pry-byebug"
|
44
|
+
spec.add_development_dependency "benchmark-ips"
|
45
|
+
spec.add_development_dependency 'sqlite3'
|
46
|
+
end
|
data/to_niceql.png
ADDED
Binary file
|
metadata
ADDED
@@ -0,0 +1,193 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rails_sql_prettifier
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 5.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- alekseyl
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-01-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: niceql
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.5.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.5.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activerecord
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "<"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '6.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "<"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '6.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 12.3.3
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 12.3.3
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '5.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '5.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: differ
|
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: pry-byebug
|
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: benchmark-ips
|
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: sqlite3
|
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
|
+
description: 'This is an ActiveRecord integration for the SQL prettifier gem niceql. '
|
140
|
+
email:
|
141
|
+
- leshchuk@gmail.com
|
142
|
+
executables: []
|
143
|
+
extensions: []
|
144
|
+
extra_rdoc_files: []
|
145
|
+
files:
|
146
|
+
- ".byebug_history"
|
147
|
+
- ".gitignore"
|
148
|
+
- ".ruby-gemset"
|
149
|
+
- ".ruby-version"
|
150
|
+
- ".travis.yml"
|
151
|
+
- CHANGELOG.md
|
152
|
+
- Gemfile
|
153
|
+
- LICENSE.txt
|
154
|
+
- README.md
|
155
|
+
- Rakefile
|
156
|
+
- bin/console
|
157
|
+
- bin/setup
|
158
|
+
- err_now.png
|
159
|
+
- err_was.png
|
160
|
+
- lib/benchmark/cat.rb
|
161
|
+
- lib/benchmark/gsub.rb
|
162
|
+
- lib/benchmark/txt
|
163
|
+
- lib/generators/niceql/install_generator.rb
|
164
|
+
- lib/generators/templates/niceql_initializer.rb
|
165
|
+
- lib/rails_sql_prettifier.rb
|
166
|
+
- lib/rails_sql_prettifier/version.rb
|
167
|
+
- rails_sql_prettifier.gemspec
|
168
|
+
- to_niceql.png
|
169
|
+
homepage: https://github.com/alekseyl/rails_sql_prettifier
|
170
|
+
licenses:
|
171
|
+
- MIT
|
172
|
+
metadata:
|
173
|
+
allowed_push_host: https://rubygems.org
|
174
|
+
post_install_message:
|
175
|
+
rdoc_options: []
|
176
|
+
require_paths:
|
177
|
+
- lib
|
178
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
179
|
+
requirements:
|
180
|
+
- - ">="
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: '2.4'
|
183
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
requirements: []
|
189
|
+
rubygems_version: 3.1.4
|
190
|
+
signing_key:
|
191
|
+
specification_version: 4
|
192
|
+
summary: This is an ActiveRecord integration for the SQL prettifier gem niceql.
|
193
|
+
test_files: []
|