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.
@@ -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,3 @@
1
+ module RailsSQLPrettifier
2
+ VERSION = '5.0.0'
3
+ 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: []