arel_toolkit 0.4.2 → 0.4.6

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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/coverage.yml +48 -0
  3. data/.github/workflows/test.yml +68 -0
  4. data/.gitignore +3 -1
  5. data/.rubocop.yml +1 -0
  6. data/.ruby-version +1 -1
  7. data/.tool-versions +1 -0
  8. data/Appraisals +4 -0
  9. data/CHANGELOG.md +52 -3
  10. data/Gemfile.lock +129 -81
  11. data/README.md +20 -3
  12. data/arel_toolkit.gemspec +4 -7
  13. data/bin/console +2 -1
  14. data/bin/setup +23 -2
  15. data/docker-compose.yml +11 -0
  16. data/gemfiles/active_record_6.gemfile +7 -0
  17. data/gemfiles/active_record_6.gemfile.lock +212 -0
  18. data/gemfiles/arel_gems.gemfile.lock +11 -10
  19. data/gemfiles/default.gemfile.lock +11 -10
  20. data/lib/arel/enhance/node.rb +18 -12
  21. data/lib/arel/extensions.rb +1 -0
  22. data/lib/arel/extensions/conflict.rb +3 -3
  23. data/lib/arel/extensions/delete_statement.rb +20 -15
  24. data/lib/arel/extensions/function.rb +1 -1
  25. data/lib/arel/extensions/infer.rb +3 -3
  26. data/lib/arel/extensions/insert_statement.rb +4 -4
  27. data/lib/arel/extensions/select_core.rb +21 -7
  28. data/lib/arel/extensions/top.rb +8 -0
  29. data/lib/arel/extensions/transaction.rb +9 -9
  30. data/lib/arel/extensions/update_statement.rb +9 -23
  31. data/lib/arel/middleware/cache_accessor.rb +35 -0
  32. data/lib/arel/middleware/chain.rb +53 -29
  33. data/lib/arel/middleware/database_executor.rb +11 -2
  34. data/lib/arel/middleware/no_op_cache.rb +9 -0
  35. data/lib/arel/sql_to_arel/pg_query_visitor.rb +430 -521
  36. data/lib/arel/sql_to_arel/pg_query_visitor/frame_options.rb +37 -5
  37. data/lib/arel/transformer/prefix_schema_name.rb +5 -3
  38. data/lib/arel_toolkit.rb +1 -0
  39. data/lib/arel_toolkit/version.rb +1 -1
  40. metadata +31 -32
  41. data/.github/workflows/develop.yml +0 -88
  42. data/.github/workflows/master.yml +0 -67
data/README.md CHANGED
@@ -143,9 +143,26 @@ This gem aims to have full support for PostgreSQL's SQL. In order to do so, it n
143
143
 
144
144
  ## Development
145
145
 
146
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
147
-
148
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
146
+ 1. Check out the repo
147
+ 1. Run `bin/setup` to install dependencies.
148
+ 1. Start the postgres database `docker compose up`
149
+ 1. Run `bundle exec rspec` to run the tests
150
+ 1. Run `bundle exec appraisal rspec` to run the tests for the different gem sets
151
+
152
+ You can also run `bin/console` for an interactive prompt that will allow you to experiment. To install this gem onto your local machine, run `bundle exec rake install`.
153
+
154
+ ## Releasing
155
+
156
+ 1. Update version in `version.rb`
157
+ 1. Create a new branch `v<<VERSION_HERE>>`
158
+ 1. Run `bundle install`
159
+ 1. Run `bundle exec appraisal install`
160
+ 1. Run `bundle exec rake changelog`
161
+ 1. Commit the changes
162
+ 1. Open a PR with name `Version <<VERSION_HERE>>` ([example](https://github.com/mvgijssel/arel_toolkit/pull/172))
163
+ 1. Merge the PR
164
+ 1. Checkout the master branch and pull latest changes
165
+ 1. Run `bundle exec rake release`
149
166
 
150
167
  ## Contributing
151
168
 
data/arel_toolkit.gemspec CHANGED
@@ -25,19 +25,18 @@ Gem::Specification.new do |spec|
25
25
  spec.require_paths = ['lib']
26
26
  spec.extensions = ['ext/pg_result_init/extconf.rb']
27
27
 
28
- spec.add_dependency 'arel', '~> 9.0.0'
29
- spec.add_dependency 'activerecord', '~> 5.2.0'
28
+ spec.add_dependency 'activerecord', '>= 5.0.0', '< 6.0.4'
30
29
  spec.add_dependency 'pg', '~> 1.1.4'
31
- spec.add_dependency 'pg_query', '~> 1.1.0'
30
+ spec.add_dependency 'pg_query', '~> 2.1'
32
31
 
33
32
  spec.add_development_dependency 'bundler', '~> 2.0'
34
33
  spec.add_development_dependency 'dpl', '~> 1.10.11'
35
34
  spec.add_development_dependency 'github_changelog_generator', '~> 1.15'
36
- spec.add_development_dependency 'rake', '~> 10.0'
35
+ spec.add_development_dependency 'rake', '~> 13.0'
37
36
  spec.add_development_dependency 'rake-compiler', '~> 1.0'
38
37
  spec.add_development_dependency 'rspec', '~> 3.8'
39
38
  spec.add_development_dependency 'approvals', '~> 0.0.24'
40
- spec.add_development_dependency 'appraisal', '~> 2.2.0'
39
+ spec.add_development_dependency 'appraisal', '~> 2.4.1'
41
40
  spec.add_development_dependency 'database_cleaner', '~> 1.7.0'
42
41
  spec.add_development_dependency 'simplecov', '~> 0.16.1'
43
42
  spec.add_development_dependency 'simplecov-console', '~> 0.4.2'
@@ -48,10 +47,8 @@ Gem::Specification.new do |spec|
48
47
  spec.add_development_dependency 'guard-rspec', '~> 4.7'
49
48
  spec.add_development_dependency 'guard-rubocop', '~> 1.3.0'
50
49
  spec.add_development_dependency 'guard-rake', '~> 1.0.0'
51
-
52
50
  spec.add_development_dependency 'stackprof', '~> 0.2'
53
51
  spec.add_development_dependency 'memory_profiler', '~> 0.9'
54
-
55
52
  spec.add_development_dependency 'pry'
56
53
  spec.add_development_dependency 'pry-nav'
57
54
  spec.add_development_dependency 'pry-doc'
data/bin/console CHANGED
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'bundler/setup'
4
+ require 'pry'
5
+
4
6
  require 'arel_toolkit'
5
7
  require_relative '../spec/support/active_record'
6
8
 
@@ -8,5 +10,4 @@ require_relative '../spec/support/active_record'
8
10
  # with your gem easier. You can also use a different console, if you like.
9
11
 
10
12
  # (If you use this, don't forget to add pry to your Gemfile!)
11
- require 'pry'
12
13
  Pry.start
data/bin/setup CHANGED
@@ -3,6 +3,27 @@ set -euo pipefail
3
3
  IFS=$'\n\t'
4
4
  set -vx
5
5
 
6
- bundle install
6
+ asdf plugin-add ruby || true
7
+ asdf install
8
+
9
+ # Make sure "gem" is available
10
+ asdf reshim ruby
11
+
12
+ # Need specific version of bundler for this ruby version
13
+ gem install bundler -v 2.2.19
14
+
15
+ # Make sure "bundle" is available
16
+ asdf reshim ruby
7
17
 
8
- # Do any other automated setup that you need to do here
18
+ EXPECTED_VERSION="Bundler version 2.2.19"
19
+ BUNDLER_VERSION=$(bundle --version)
20
+
21
+ if [[ "$BUNDLER_VERSION" != "$EXPECTED_VERSION" ]]; then
22
+ echo "Using the wrong bundler version: '$BUNDLER_VERSION'. Expected '$EXPECTED_VERSION'"
23
+ exit 1
24
+ fi
25
+
26
+ bundle install
27
+ bundle exec appraisal install
28
+ bundle exec rake clean
29
+ bundle exec rake compile
@@ -0,0 +1,11 @@
1
+ version: '3.8'
2
+ services:
3
+ database:
4
+ image: postgres:latest
5
+ container_name: arel_toolkit_database
6
+ environment:
7
+ POSTGRES_PASSWORD: postgres
8
+ POSTGRES_USER: postgres
9
+ POSTGRES_DB: arel_toolkit_test
10
+ ports:
11
+ - 5432:5432
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activerecord", "~> 6.0.0"
6
+
7
+ gemspec path: "../"
@@ -0,0 +1,212 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ arel_toolkit (0.4.6)
5
+ activerecord (>= 5.0.0, < 6.0.4)
6
+ pg (~> 1.1.4)
7
+ pg_query (~> 2.1)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ activemodel (6.0.0)
13
+ activesupport (= 6.0.0)
14
+ activerecord (6.0.0)
15
+ activemodel (= 6.0.0)
16
+ activesupport (= 6.0.0)
17
+ activesupport (6.0.0)
18
+ concurrent-ruby (~> 1.0, >= 1.0.2)
19
+ i18n (>= 0.7, < 2)
20
+ minitest (~> 5.1)
21
+ tzinfo (~> 1.1)
22
+ zeitwerk (~> 2.1, >= 2.1.8)
23
+ addressable (2.7.0)
24
+ public_suffix (>= 2.0.2, < 5.0)
25
+ ansi (1.5.0)
26
+ appraisal (2.4.1)
27
+ bundler
28
+ rake
29
+ thor (>= 0.14.0)
30
+ approvals (0.0.24)
31
+ nokogiri (~> 1.6)
32
+ thor (~> 0.18)
33
+ ast (2.4.1)
34
+ binding_of_caller (0.8.0)
35
+ debug_inspector (>= 0.0.1)
36
+ coderay (1.1.3)
37
+ concurrent-ruby (1.1.7)
38
+ database_cleaner (1.7.0)
39
+ debug_inspector (0.0.3)
40
+ diff-lcs (1.4.4)
41
+ docile (1.3.2)
42
+ dpl (1.10.15)
43
+ faraday (1.1.0)
44
+ multipart-post (>= 1.2, < 3)
45
+ ruby2_keywords
46
+ faraday-http-cache (2.2.0)
47
+ faraday (>= 0.8)
48
+ ffi (1.13.1)
49
+ formatador (0.2.5)
50
+ github_changelog_generator (1.15.2)
51
+ activesupport
52
+ faraday-http-cache
53
+ multi_json
54
+ octokit (~> 4.6)
55
+ rainbow (>= 2.2.1)
56
+ rake (>= 10.0)
57
+ retriable (~> 3.0)
58
+ google-protobuf (3.17.3)
59
+ guard (2.16.2)
60
+ formatador (>= 0.2.4)
61
+ listen (>= 2.7, < 4.0)
62
+ lumberjack (>= 1.0.12, < 2.0)
63
+ nenv (~> 0.1)
64
+ notiffany (~> 0.0)
65
+ pry (>= 0.9.12)
66
+ shellany (~> 0.0)
67
+ thor (>= 0.18.1)
68
+ guard-compat (1.2.1)
69
+ guard-rake (1.0.0)
70
+ guard
71
+ rake
72
+ guard-rspec (4.7.3)
73
+ guard (~> 2.1)
74
+ guard-compat (~> 1.1)
75
+ rspec (>= 2.99.0, < 4.0)
76
+ guard-rubocop (1.3.0)
77
+ guard (~> 2.0)
78
+ rubocop (~> 0.20)
79
+ hirb (0.7.3)
80
+ i18n (1.8.5)
81
+ concurrent-ruby (~> 1.0)
82
+ interception (0.5)
83
+ jaro_winkler (1.5.4)
84
+ json (2.3.1)
85
+ listen (3.2.1)
86
+ rb-fsevent (~> 0.10, >= 0.10.3)
87
+ rb-inotify (~> 0.9, >= 0.9.10)
88
+ lumberjack (1.2.8)
89
+ memory_profiler (0.9.14)
90
+ method_source (0.9.2)
91
+ mini_portile2 (2.4.0)
92
+ minitest (5.14.2)
93
+ multi_json (1.15.0)
94
+ multipart-post (2.1.1)
95
+ nenv (0.3.0)
96
+ nokogiri (1.10.10)
97
+ mini_portile2 (~> 2.4.0)
98
+ notiffany (0.1.3)
99
+ nenv (~> 0.1)
100
+ shellany (~> 0.0)
101
+ octokit (4.19.0)
102
+ faraday (>= 0.9)
103
+ sawyer (~> 0.8.0, >= 0.5.3)
104
+ parallel (1.19.2)
105
+ parser (2.7.2.0)
106
+ ast (~> 2.4.1)
107
+ pg (1.1.4)
108
+ pg_query (2.1.0)
109
+ google-protobuf (>= 3.17.1)
110
+ pry (0.12.2)
111
+ coderay (~> 1.1.0)
112
+ method_source (~> 0.9.0)
113
+ pry-alias (0.0.1)
114
+ binding_of_caller
115
+ pry
116
+ pry-doc (1.1.0)
117
+ pry (~> 0.11)
118
+ yard (~> 0.9.11)
119
+ pry-nav (0.3.0)
120
+ pry (>= 0.9.10, < 0.13.0)
121
+ pry-rescue (1.5.2)
122
+ interception (>= 0.5)
123
+ pry (>= 0.12.0)
124
+ pry-stack_explorer (0.4.9.3)
125
+ binding_of_caller (>= 0.7)
126
+ pry (>= 0.9.11)
127
+ public_suffix (4.0.6)
128
+ rainbow (3.0.0)
129
+ rake (13.0.1)
130
+ rake-compiler (1.1.1)
131
+ rake
132
+ rb-fsevent (0.10.4)
133
+ rb-inotify (0.10.1)
134
+ ffi (~> 1.0)
135
+ retriable (3.1.2)
136
+ rspec (3.9.0)
137
+ rspec-core (~> 3.9.0)
138
+ rspec-expectations (~> 3.9.0)
139
+ rspec-mocks (~> 3.9.0)
140
+ rspec-core (3.9.3)
141
+ rspec-support (~> 3.9.3)
142
+ rspec-expectations (3.9.3)
143
+ diff-lcs (>= 1.2.0, < 2.0)
144
+ rspec-support (~> 3.9.0)
145
+ rspec-mocks (3.9.1)
146
+ diff-lcs (>= 1.2.0, < 2.0)
147
+ rspec-support (~> 3.9.0)
148
+ rspec-support (3.9.4)
149
+ rubocop (0.71.0)
150
+ jaro_winkler (~> 1.5.1)
151
+ parallel (~> 1.10)
152
+ parser (>= 2.6)
153
+ rainbow (>= 2.2.2, < 4.0)
154
+ ruby-progressbar (~> 1.7)
155
+ unicode-display_width (>= 1.4.0, < 1.7)
156
+ ruby-progressbar (1.10.1)
157
+ ruby2_keywords (0.0.2)
158
+ sawyer (0.8.2)
159
+ addressable (>= 2.3.5)
160
+ faraday (> 0.8, < 2.0)
161
+ shellany (0.0.1)
162
+ simplecov (0.16.1)
163
+ docile (~> 1.1)
164
+ json (>= 1.8, < 3)
165
+ simplecov-html (~> 0.10.0)
166
+ simplecov-console (0.4.2)
167
+ ansi
168
+ hirb
169
+ simplecov
170
+ simplecov-html (0.10.2)
171
+ stackprof (0.2.16)
172
+ thor (0.20.3)
173
+ thread_safe (0.3.6)
174
+ tzinfo (1.2.7)
175
+ thread_safe (~> 0.1)
176
+ unicode-display_width (1.6.1)
177
+ yard (0.9.25)
178
+ zeitwerk (2.4.0)
179
+
180
+ PLATFORMS
181
+ ruby
182
+
183
+ DEPENDENCIES
184
+ activerecord (~> 6.0.0)
185
+ appraisal (~> 2.4.1)
186
+ approvals (~> 0.0.24)
187
+ arel_toolkit!
188
+ bundler (~> 2.0)
189
+ database_cleaner (~> 1.7.0)
190
+ dpl (~> 1.10.11)
191
+ github_changelog_generator (~> 1.15)
192
+ guard (~> 2.15)
193
+ guard-rake (~> 1.0.0)
194
+ guard-rspec (~> 4.7)
195
+ guard-rubocop (~> 1.3.0)
196
+ memory_profiler (~> 0.9)
197
+ pry
198
+ pry-alias
199
+ pry-doc
200
+ pry-nav
201
+ pry-rescue
202
+ pry-stack_explorer
203
+ rake (~> 13.0)
204
+ rake-compiler (~> 1.0)
205
+ rspec (~> 3.8)
206
+ rubocop (= 0.71.0)
207
+ simplecov (~> 0.16.1)
208
+ simplecov-console (~> 0.4.2)
209
+ stackprof (~> 0.2)
210
+
211
+ BUNDLED WITH
212
+ 2.2.23
@@ -31,11 +31,10 @@ GIT
31
31
  PATH
32
32
  remote: ..
33
33
  specs:
34
- arel_toolkit (0.4.2)
35
- activerecord (~> 5.2.0)
36
- arel (~> 9.0.0)
34
+ arel_toolkit (0.4.6)
35
+ activerecord (>= 5.0.0, < 6.0.4)
37
36
  pg (~> 1.1.4)
38
- pg_query (~> 1.1.0)
37
+ pg_query (~> 2.1)
39
38
 
40
39
  GEM
41
40
  remote: https://rubygems.org/
@@ -67,7 +66,7 @@ GEM
67
66
  addressable (2.7.0)
68
67
  public_suffix (>= 2.0.2, < 5.0)
69
68
  ansi (1.5.0)
70
- appraisal (2.2.0)
69
+ appraisal (2.4.1)
71
70
  bundler
72
71
  rake
73
72
  thor (>= 0.14.0)
@@ -102,6 +101,7 @@ GEM
102
101
  rainbow (>= 2.2.1)
103
102
  rake (>= 10.0)
104
103
  retriable (~> 3.0)
104
+ google-protobuf (3.17.3)
105
105
  guard (2.15.0)
106
106
  formatador (>= 0.2.4)
107
107
  listen (>= 2.7, < 4.0)
@@ -155,7 +155,8 @@ GEM
155
155
  ast (~> 2.4.0)
156
156
  pg (1.1.4)
157
157
  pg_array_parser (0.0.9)
158
- pg_query (1.1.1)
158
+ pg_query (2.1.0)
159
+ google-protobuf (>= 3.17.1)
159
160
  pry (0.12.2)
160
161
  coderay (~> 1.1.0)
161
162
  method_source (~> 0.9.0)
@@ -189,7 +190,7 @@ GEM
189
190
  rake (>= 0.8.7)
190
191
  thor (>= 0.19.0, < 2.0)
191
192
  rainbow (3.0.0)
192
- rake (10.5.0)
193
+ rake (13.0.1)
193
194
  rake-compiler (1.0.7)
194
195
  rake
195
196
  rb-fsevent (0.10.3)
@@ -252,7 +253,7 @@ PLATFORMS
252
253
 
253
254
  DEPENDENCIES
254
255
  active_record_upsert!
255
- appraisal (~> 2.2.0)
256
+ appraisal (~> 2.4.1)
256
257
  approvals (~> 0.0.24)
257
258
  arel_toolkit!
258
259
  bundler (~> 2.0)
@@ -272,7 +273,7 @@ DEPENDENCIES
272
273
  pry-nav
273
274
  pry-rescue
274
275
  pry-stack_explorer
275
- rake (~> 10.0)
276
+ rake (~> 13.0)
276
277
  rake-compiler (~> 1.0)
277
278
  rspec (~> 3.8)
278
279
  rspec-rails (~> 3.8.0)
@@ -282,4 +283,4 @@ DEPENDENCIES
282
283
  stackprof (~> 0.2)
283
284
 
284
285
  BUNDLED WITH
285
- 2.0.2
286
+ 2.2.23
@@ -1,11 +1,10 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- arel_toolkit (0.4.2)
5
- activerecord (~> 5.2.0)
6
- arel (~> 9.0.0)
4
+ arel_toolkit (0.4.6)
5
+ activerecord (>= 5.0.0, < 6.0.4)
7
6
  pg (~> 1.1.4)
8
- pg_query (~> 1.1.0)
7
+ pg_query (~> 2.1)
9
8
 
10
9
  GEM
11
10
  remote: https://rubygems.org/
@@ -24,7 +23,7 @@ GEM
24
23
  addressable (2.7.0)
25
24
  public_suffix (>= 2.0.2, < 5.0)
26
25
  ansi (1.5.0)
27
- appraisal (2.2.0)
26
+ appraisal (2.4.1)
28
27
  bundler
29
28
  rake
30
29
  thor (>= 0.14.0)
@@ -56,6 +55,7 @@ GEM
56
55
  rainbow (>= 2.2.1)
57
56
  rake (>= 10.0)
58
57
  retriable (~> 3.0)
58
+ google-protobuf (3.17.3)
59
59
  guard (2.15.0)
60
60
  formatador (>= 0.2.4)
61
61
  listen (>= 2.7, < 4.0)
@@ -105,7 +105,8 @@ GEM
105
105
  parser (2.6.3.0)
106
106
  ast (~> 2.4.0)
107
107
  pg (1.1.4)
108
- pg_query (1.1.1)
108
+ pg_query (2.1.0)
109
+ google-protobuf (>= 3.17.1)
109
110
  pry (0.12.2)
110
111
  coderay (~> 1.1.0)
111
112
  method_source (~> 0.9.0)
@@ -125,7 +126,7 @@ GEM
125
126
  pry (>= 0.9.11)
126
127
  public_suffix (4.0.1)
127
128
  rainbow (3.0.0)
128
- rake (10.5.0)
129
+ rake (13.0.1)
129
130
  rake-compiler (1.0.7)
130
131
  rake
131
132
  rb-fsevent (0.10.3)
@@ -179,7 +180,7 @@ PLATFORMS
179
180
  ruby
180
181
 
181
182
  DEPENDENCIES
182
- appraisal (~> 2.2.0)
183
+ appraisal (~> 2.4.1)
183
184
  approvals (~> 0.0.24)
184
185
  arel_toolkit!
185
186
  bundler (~> 2.0)
@@ -197,7 +198,7 @@ DEPENDENCIES
197
198
  pry-nav
198
199
  pry-rescue
199
200
  pry-stack_explorer
200
- rake (~> 10.0)
201
+ rake (~> 13.0)
201
202
  rake-compiler (~> 1.0)
202
203
  rspec (~> 3.8)
203
204
  rubocop (= 0.71.0)
@@ -206,4 +207,4 @@ DEPENDENCIES
206
207
  stackprof (~> 0.2)
207
208
 
208
209
  BUNDLED WITH
209
- 2.0.2
210
+ 2.2.23