arel_toolkit 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/develop.yml +86 -0
  3. data/.github/workflows/master.yml +67 -0
  4. data/.gitignore +4 -0
  5. data/CHANGELOG.md +35 -3
  6. data/Gemfile.lock +22 -15
  7. data/Guardfile +4 -0
  8. data/README.md +11 -8
  9. data/Rakefile +11 -1
  10. data/arel_toolkit.gemspec +4 -1
  11. data/ext/pg_result_init/extconf.rb +52 -0
  12. data/ext/pg_result_init/pg_result_init.c +138 -0
  13. data/ext/pg_result_init/pg_result_init.h +6 -0
  14. data/gemfiles/arel_gems.gemfile.lock +7 -0
  15. data/gemfiles/default.gemfile.lock +7 -0
  16. data/lib/arel/enhance.rb +1 -0
  17. data/lib/arel/enhance/context_enhancer/arel_table.rb +18 -1
  18. data/lib/arel/enhance/node.rb +25 -6
  19. data/lib/arel/enhance/query.rb +2 -0
  20. data/lib/arel/enhance/query_methods.rb +23 -0
  21. data/lib/arel/enhance/visitor.rb +4 -2
  22. data/lib/arel/extensions.rb +7 -2
  23. data/lib/arel/extensions/active_model_attribute_with_cast_value.rb +22 -0
  24. data/lib/arel/extensions/active_record_relation_query_attribute.rb +22 -0
  25. data/lib/arel/extensions/active_record_type_caster_connection.rb +7 -0
  26. data/lib/arel/extensions/attributes_attribute.rb +47 -0
  27. data/lib/arel/extensions/bind_param.rb +15 -0
  28. data/lib/arel/extensions/coalesce.rb +17 -3
  29. data/lib/arel/extensions/exists.rb +59 -0
  30. data/lib/arel/extensions/function.rb +2 -1
  31. data/lib/arel/extensions/greatest.rb +17 -3
  32. data/lib/arel/extensions/insert_statement.rb +2 -2
  33. data/lib/arel/extensions/least.rb +17 -3
  34. data/lib/arel/extensions/node.rb +10 -0
  35. data/lib/arel/extensions/range_function.rb +10 -2
  36. data/lib/arel/extensions/select_core.rb +1 -0
  37. data/lib/arel/extensions/tree_manager.rb +5 -0
  38. data/lib/arel/middleware.rb +5 -1
  39. data/lib/arel/middleware/active_record_extension.rb +13 -0
  40. data/lib/arel/middleware/chain.rb +76 -21
  41. data/lib/arel/middleware/database_executor.rb +68 -0
  42. data/lib/arel/middleware/postgresql_adapter.rb +41 -5
  43. data/lib/arel/middleware/railtie.rb +6 -2
  44. data/lib/arel/middleware/result.rb +170 -0
  45. data/lib/arel/middleware/to_sql_executor.rb +15 -0
  46. data/lib/arel/middleware/to_sql_middleware.rb +33 -0
  47. data/lib/arel/sql_to_arel/pg_query_visitor.rb +34 -33
  48. data/lib/arel/sql_to_arel/result.rb +19 -2
  49. data/lib/arel/transformer.rb +2 -1
  50. data/lib/arel/transformer/prefix_schema_name.rb +183 -0
  51. data/lib/arel/transformer/remove_active_record_info.rb +2 -4
  52. data/lib/arel/transformer/replace_table_with_subquery.rb +31 -0
  53. data/lib/arel_toolkit.rb +6 -1
  54. data/lib/arel_toolkit/version.rb +1 -1
  55. metadata +55 -10
  56. data/.travis.yml +0 -34
  57. data/lib/arel/extensions/generate_series.rb +0 -9
  58. data/lib/arel/extensions/rank.rb +0 -9
  59. data/lib/arel/transformer/add_schema_to_table.rb +0 -26
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5e147a210e33300231d9f47c66eb56d961ffa83c9b3e22744427270e2188c6c2
4
- data.tar.gz: 5fdba0c675a031f44eed13f217520da94f8f3f347198c3bdfdf92786622f01f0
3
+ metadata.gz: 1e58b08598fbaed4b77466a70f23818f8f41c6a82657c3a7bed28541b06f3c01
4
+ data.tar.gz: a16bfdb439a31fece794eaa6d54092ad0edb52e3e463957abf96db8259e6e0c9
5
5
  SHA512:
6
- metadata.gz: db6d5427ffd51079b8652ad706d5e265889d996dda889b22e28ca84296310ab4a2517a63b3cfa7105bfbba745eaf9bc12947261f91acfe250005b94edf0f1912
7
- data.tar.gz: 785dbd44ba4008a3cae7ef3d51d53afe7b048c9877a574853a9e2dbf63992474dfd4f3be40c0b3d50573ec290072414addcfee59d942449a622b98a7ceb3de43
6
+ metadata.gz: ee280959b83a74d0f633442d488218aa36ea88bba7f1d2783ae9848bcb1904055e28db1d71a66bd187360e0bf4cebce1da0c248284a6bf28c3476c6a206d4d98
7
+ data.tar.gz: 7b571f3ed5301b57053039fd1088a698d4e3f7bb355bda276477254a33a5b49dcee64abf0381268df1408ebf7d35a593ec14757b5ea4998c898c71e978f41b5b
@@ -0,0 +1,86 @@
1
+ name: CI - develop
2
+ on:
3
+ push:
4
+ branches-ignore:
5
+ - master
6
+
7
+ jobs:
8
+ rspec:
9
+ name: RSpec - ${{ matrix.title }}
10
+ runs-on: ubuntu-latest
11
+ strategy:
12
+ fail-fast: false
13
+ matrix:
14
+ checkout: [branch, master]
15
+ include:
16
+ - checkout: branch
17
+ ref: null
18
+ title: current branch
19
+ rebase: false
20
+ codeclimate: true
21
+ - checkout: master
22
+ ref: master
23
+ title: merge with master
24
+ rebase: true
25
+ codeclimate: false
26
+
27
+ services:
28
+ postgres:
29
+ options: >-
30
+ --health-cmd pg_isready
31
+ --health-interval 10s
32
+ --health-timeout 5s
33
+ --health-retries 5
34
+ image: postgres:10.10
35
+ ports:
36
+ - 5432:5432
37
+ env:
38
+ POSTGRES_DB: arel_toolkit_test
39
+ POSTGRES_USER: postgres
40
+ steps:
41
+ - uses: actions/checkout@v1
42
+ with:
43
+ ref: ${{ matrix.ref }}
44
+
45
+ # Based on
46
+ # https://discourse.drone.io/t/planned-change-to-git-clone-logic/1165
47
+ - name: Rebase
48
+ if: matrix.rebase
49
+ run: |
50
+ git fetch origin $GITHUB_REF
51
+ git rebase $GITHUB_SHA
52
+
53
+ - name: Set up Ruby 2.5.x
54
+ uses: actions/setup-ruby@v1
55
+ with:
56
+ ruby-version: 2.5.x
57
+
58
+ - name: Setup
59
+ run: |
60
+ curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
61
+ chmod +x ./cc-test-reporter
62
+ ./cc-test-reporter before-build
63
+
64
+ sudo apt-get install -y libpq-dev
65
+
66
+ gem install bundler
67
+
68
+ bundle install --jobs 4 --retry 3
69
+ bundle exec appraisal install
70
+
71
+ bundle exec rake clean
72
+ bundle exec rake compile
73
+
74
+ - name: RSpec
75
+ run: |
76
+ bundle exec appraisal rspec --force-color
77
+
78
+ - name: Report to codeclimate
79
+ if: always() && matrix.codeclimate
80
+ shell: bash
81
+ env:
82
+ JOB_STATUS: ${{ job.status == 'Success' }}
83
+ CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
84
+ run: |
85
+ EXIT_CODE=$([[ "$JOB_STATUS" == true ]] && echo 0 || echo 1)
86
+ ./cc-test-reporter after-build --exit-code $EXIT_CODE
@@ -0,0 +1,67 @@
1
+ name: CI - master
2
+ on:
3
+ push:
4
+ branches:
5
+ - master
6
+
7
+ jobs:
8
+ rspec:
9
+ name: RSpec - master
10
+ runs-on: ubuntu-latest
11
+
12
+ services:
13
+ postgres:
14
+ options: >-
15
+ --health-cmd pg_isready
16
+ --health-interval 10s
17
+ --health-timeout 5s
18
+ --health-retries 5
19
+ image: postgres:10.10
20
+ ports:
21
+ - 5432:5432
22
+ env:
23
+ POSTGRES_DB: arel_toolkit_test
24
+ POSTGRES_USER: postgres
25
+ steps:
26
+ - uses: actions/checkout@v1
27
+
28
+ - name: Set up Ruby 2.5.x
29
+ uses: actions/setup-ruby@v1
30
+ with:
31
+ ruby-version: 2.5.x
32
+
33
+ - name: Setup
34
+ run: |
35
+ curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
36
+ chmod +x ./cc-test-reporter
37
+ ./cc-test-reporter before-build
38
+
39
+ sudo apt-get install -y libpq-dev
40
+
41
+ gem install bundler
42
+
43
+ bundle install --jobs 4 --retry 3
44
+ bundle exec appraisal install
45
+
46
+ bundle exec rake clean
47
+ bundle exec rake compile
48
+
49
+ - name: RSpec
50
+ run: |
51
+ bundle exec appraisal rspec --force-color
52
+
53
+ - name: Report to codeclimate
54
+ if: always()
55
+ shell: bash
56
+ env:
57
+ JOB_STATUS: ${{ job.status == 'Success' }}
58
+ CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
59
+ run: |
60
+ EXIT_CODE=$([[ "$JOB_STATUS" == true ]] && echo 0 || echo 1)
61
+ ./cc-test-reporter after-build --exit-code $EXIT_CODE
62
+
63
+ - name: Upload coverage to GitHub pages
64
+ uses: maxheld83/ghpages@v0.2.1
65
+ env:
66
+ BUILD_DIR: ./coverage
67
+ GH_PAT: ${{ secrets.GH_PAT }}
data/.gitignore CHANGED
@@ -6,6 +6,10 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ *.bundle
10
+ *.so
11
+ *.o
12
+ *.a
9
13
 
10
14
  # rspec failure tracking
11
15
  .rspec_status
data/CHANGELOG.md CHANGED
@@ -1,6 +1,31 @@
1
- # Change Log
1
+ # Changelog
2
+
3
+ ## [v0.4.1](https://github.com/mvgijssel/arel_toolkit/tree/v0.4.1) (2019-11-13)
4
+
5
+ [Full Changelog](https://github.com/mvgijssel/arel_toolkit/compare/v0.4.0...v0.4.1)
6
+
7
+ **Implemented enhancements:**
8
+
9
+ - Create a transformer that replaces a table reference with a subquery [\#141](https://github.com/mvgijssel/arel_toolkit/issues/141)
10
+ - Same signature for all middleware helpers [\#135](https://github.com/mvgijssel/arel_toolkit/issues/135)
11
+ - Instantiate PG::Result object instead of duck typed object [\#130](https://github.com/mvgijssel/arel_toolkit/issues/130)
12
+ - Add `to\_sql` to Arel.middleware which prints the sql after middleware processing [\#127](https://github.com/mvgijssel/arel_toolkit/issues/127)
13
+ - Extend Middleware to include the response from the database [\#126](https://github.com/mvgijssel/arel_toolkit/issues/126)
14
+ - Extend AddSchemaToTable to support multiple schemas and regclass typecasts [\#124](https://github.com/mvgijssel/arel_toolkit/issues/124)
15
+ - Optional context argument for Arel middleware [\#110](https://github.com/mvgijssel/arel_toolkit/issues/110)
16
+ - Handle is\_rowsfrom in pg\_query\_visitor\#visit\_RangeFunction [\#36](https://github.com/mvgijssel/arel_toolkit/issues/36)
17
+ - Bump nokogiri from 1.10.3 to 1.10.4 [\#132](https://github.com/mvgijssel/arel_toolkit/pull/132) ([dependabot[bot]](https://github.com/apps/dependabot))
18
+
19
+ **Fixed bugs:**
20
+
21
+ - Handle column reference with 3 \(or more\) fields [\#145](https://github.com/mvgijssel/arel_toolkit/issues/145)
22
+ - Error when aliasing a range select [\#144](https://github.com/mvgijssel/arel_toolkit/issues/144)
23
+ - Make sure the method signatures of PostgreSQLAdapter match [\#122](https://github.com/mvgijssel/arel_toolkit/issues/122)
24
+ - Fix missing middleware method and fix \(again\) infinite middleware recursion [\#120](https://github.com/mvgijssel/arel_toolkit/issues/120)
25
+ - Use named window with OVER. [\#149](https://github.com/mvgijssel/arel_toolkit/pull/149) ([khaleksa](https://github.com/khaleksa))
2
26
 
3
27
  ## [v0.4.0](https://github.com/mvgijssel/arel_toolkit/tree/v0.4.0) (2019-07-31)
28
+
4
29
  [Full Changelog](https://github.com/mvgijssel/arel_toolkit/compare/v0.3.0...v0.4.0)
5
30
 
6
31
  **Implemented enhancements:**
@@ -20,6 +45,7 @@
20
45
  - TypeError: superclass mismatch for class Overlap [\#93](https://github.com/mvgijssel/arel_toolkit/issues/93)
21
46
 
22
47
  ## [v0.3.0](https://github.com/mvgijssel/arel_toolkit/tree/v0.3.0) (2019-07-01)
48
+
23
49
  [Full Changelog](https://github.com/mvgijssel/arel_toolkit/compare/v0.2.0...v0.3.0)
24
50
 
25
51
  **Implemented enhancements:**
@@ -47,6 +73,7 @@
47
73
  - File issues for commented out rspec test [\#51](https://github.com/mvgijssel/arel_toolkit/issues/51)
48
74
 
49
75
  ## [v0.2.0](https://github.com/mvgijssel/arel_toolkit/tree/v0.2.0) (2019-05-30)
76
+
50
77
  [Full Changelog](https://github.com/mvgijssel/arel_toolkit/compare/v0.1.0...v0.2.0)
51
78
 
52
79
  **Implemented enhancements:**
@@ -61,6 +88,12 @@
61
88
  - Implement pg\_query\_visitor method for UPDATE [\#20](https://github.com/mvgijssel/arel_toolkit/issues/20)
62
89
  - Implement all the visitor methods in PgQueryVisitor for SELECT statements [\#11](https://github.com/mvgijssel/arel_toolkit/issues/11)
63
90
  - Introduce Guard [\#5](https://github.com/mvgijssel/arel_toolkit/issues/5)
91
+ - 22/implement delete [\#30](https://github.com/mvgijssel/arel_toolkit/pull/30) ([mvgijssel](https://github.com/mvgijssel))
92
+ - Added WITH, OVERRIDING and RETURINING to INSERT [\#29](https://github.com/mvgijssel/arel_toolkit/pull/29) ([mvgijssel](https://github.com/mvgijssel))
93
+ - Initial UPDATE\_STMT [\#27](https://github.com/mvgijssel/arel_toolkit/pull/27) ([mvgijssel](https://github.com/mvgijssel))
94
+ - Added badges to README \(and fix setup\) [\#3](https://github.com/mvgijssel/arel_toolkit/pull/3) ([mvgijssel](https://github.com/mvgijssel))
95
+ - Configure codeclimate [\#2](https://github.com/mvgijssel/arel_toolkit/pull/2) ([mvgijssel](https://github.com/mvgijssel))
96
+ - Updated travis file [\#1](https://github.com/mvgijssel/arel_toolkit/pull/1) ([mvgijssel](https://github.com/mvgijssel))
64
97
 
65
98
  **Fixed bugs:**
66
99
 
@@ -72,7 +105,6 @@
72
105
  - Remove unnecessary to\_arel remains [\#15](https://github.com/mvgijssel/arel_toolkit/issues/15)
73
106
  - Merge to\_arel gem [\#4](https://github.com/mvgijssel/arel_toolkit/issues/4)
74
107
 
75
- ## [v0.1.0](https://github.com/mvgijssel/arel_toolkit/tree/v0.1.0) (2019-05-16)
76
108
 
77
109
 
78
- \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
110
+ \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- arel_toolkit (0.4.0)
4
+ arel_toolkit (0.4.1)
5
5
  activerecord (~> 5.2.0)
6
6
  arel (~> 9.0.0)
7
7
  pg (~> 1.1.4)
@@ -21,8 +21,8 @@ GEM
21
21
  i18n (>= 0.7, < 2)
22
22
  minitest (~> 5.1)
23
23
  tzinfo (~> 1.1)
24
- addressable (2.6.0)
25
- public_suffix (>= 2.0.2, < 4.0)
24
+ addressable (2.7.0)
25
+ public_suffix (>= 2.0.2, < 5.0)
26
26
  ansi (1.5.0)
27
27
  appraisal (2.2.0)
28
28
  bundler
@@ -42,20 +42,20 @@ GEM
42
42
  diff-lcs (1.3)
43
43
  docile (1.3.1)
44
44
  dpl (1.10.11)
45
- faraday (0.15.4)
45
+ faraday (0.17.0)
46
46
  multipart-post (>= 1.2, < 3)
47
47
  faraday-http-cache (2.0.0)
48
48
  faraday (~> 0.8)
49
49
  ffi (1.11.1)
50
50
  formatador (0.2.5)
51
- github_changelog_generator (1.14.3)
51
+ github_changelog_generator (1.15.0)
52
52
  activesupport
53
53
  faraday-http-cache
54
54
  multi_json
55
55
  octokit (~> 4.6)
56
- rainbow (>= 2.1)
56
+ rainbow (>= 2.2.1)
57
57
  rake (>= 10.0)
58
- retriable (~> 2.1)
58
+ retriable (~> 3.0)
59
59
  guard (2.15.0)
60
60
  formatador (>= 0.2.4)
61
61
  listen (>= 2.7, < 4.0)
@@ -66,6 +66,9 @@ GEM
66
66
  shellany (~> 0.0)
67
67
  thor (>= 0.18.1)
68
68
  guard-compat (1.2.1)
69
+ guard-rake (1.0.0)
70
+ guard
71
+ rake
69
72
  guard-rspec (4.7.3)
70
73
  guard (~> 2.1)
71
74
  guard-compat (~> 1.1)
@@ -74,7 +77,7 @@ GEM
74
77
  guard (~> 2.0)
75
78
  rubocop (~> 0.20)
76
79
  hirb (0.7.3)
77
- i18n (1.6.0)
80
+ i18n (1.7.0)
78
81
  concurrent-ruby (~> 1.0)
79
82
  interception (0.5)
80
83
  jaro_winkler (1.5.3)
@@ -86,11 +89,11 @@ GEM
86
89
  lumberjack (1.0.13)
87
90
  method_source (0.9.2)
88
91
  mini_portile2 (2.4.0)
89
- minitest (5.11.3)
90
- multi_json (1.13.1)
92
+ minitest (5.13.0)
93
+ multi_json (1.14.1)
91
94
  multipart-post (2.1.1)
92
95
  nenv (0.3.0)
93
- nokogiri (1.10.3)
96
+ nokogiri (1.10.4)
94
97
  mini_portile2 (~> 2.4.0)
95
98
  notiffany (0.1.1)
96
99
  nenv (~> 0.1)
@@ -101,7 +104,7 @@ GEM
101
104
  parser (2.6.3.0)
102
105
  ast (~> 2.4.0)
103
106
  pg (1.1.4)
104
- pg_query (1.1.0)
107
+ pg_query (1.1.1)
105
108
  pry (0.12.2)
106
109
  coderay (~> 1.1.0)
107
110
  method_source (~> 0.9.0)
@@ -119,13 +122,15 @@ GEM
119
122
  pry-stack_explorer (0.4.9.3)
120
123
  binding_of_caller (>= 0.7)
121
124
  pry (>= 0.9.11)
122
- public_suffix (3.1.1)
125
+ public_suffix (4.0.1)
123
126
  rainbow (3.0.0)
124
127
  rake (10.5.0)
128
+ rake-compiler (1.0.7)
129
+ rake
125
130
  rb-fsevent (0.10.3)
126
131
  rb-inotify (0.10.0)
127
132
  ffi (~> 1.0)
128
- retriable (2.1.0)
133
+ retriable (3.1.2)
129
134
  rspec (3.8.0)
130
135
  rspec-core (~> 3.8.0)
131
136
  rspec-expectations (~> 3.8.0)
@@ -178,8 +183,9 @@ DEPENDENCIES
178
183
  bundler (~> 2.0)
179
184
  database_cleaner (~> 1.7.0)
180
185
  dpl (~> 1.10.11)
181
- github_changelog_generator (~> 1.14.3)
186
+ github_changelog_generator (~> 1.15)
182
187
  guard (~> 2.15)
188
+ guard-rake (~> 1.0.0)
183
189
  guard-rspec (~> 4.7)
184
190
  guard-rubocop (~> 1.3.0)
185
191
  pry
@@ -189,6 +195,7 @@ DEPENDENCIES
189
195
  pry-rescue
190
196
  pry-stack_explorer
191
197
  rake (~> 10.0)
198
+ rake-compiler (~> 1.0)
192
199
  rspec (~> 3.8)
193
200
  rubocop (= 0.71.0)
194
201
  simplecov (~> 0.16.1)
data/Guardfile CHANGED
@@ -47,3 +47,7 @@ group :red_green_refactor, halt_on_fail: true do
47
47
  watch(%r{(?:.+/)?\.rubocop(?:_todo)?\.yml$}) { |m| File.dirname(m[0]) }
48
48
  end
49
49
  end
50
+
51
+ guard 'rake', task: 'compile' do
52
+ watch(/^ext/)
53
+ end
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Overview
4
4
 
5
- - [![Build Status](https://travis-ci.com/mvgijssel/arel_toolkit.svg?branch=master)](https://travis-ci.com/mvgijssel/arel_toolkit)
5
+ - [![](https://github.com/mvgijssel/arel_toolkit/workflows/CI%20-%20master/badge.svg)](https://github.com/mvgijssel/arel_toolkit/actions)
6
6
  - [![Maintainability](https://api.codeclimate.com/v1/badges/3ef13d1649a00a98562d/maintainability)](https://codeclimate.com/github/mvgijssel/arel_toolkit/maintainability)
7
7
  - [![Test Coverage](https://api.codeclimate.com/v1/badges/3ef13d1649a00a98562d/test_coverage)](https://codeclimate.com/github/mvgijssel/arel_toolkit/test_coverage)
8
8
  - [![Gem Version](https://badge.fury.io/rb/arel_toolkit.svg)](https://badge.fury.io/rb/arel_toolkit)
@@ -84,33 +84,36 @@ Middleware sits between ActiveRecord and the database, it allows you to alter th
84
84
  The middleware works out of the box in combination with Rails. If using ActiveRecord standalone you need to run the following **after** setting up the database connection:
85
85
 
86
86
  ```ruby
87
- Arel::Middleware::Railtie.insert_postgresql
87
+ Arel::Middleware::Railtie.insert
88
88
  ```
89
89
 
90
90
  ### Example
91
91
 
92
- Create some middleware (this can be any Ruby object as long as it responds to `call`). In this example, we're creating a middleware that will reorder any query. Next to reordering, we're adding an additional middleware that prints out the result of the reorder middleware.
92
+ Create middleware which can be any Ruby object as long as it responds to `call`. Middleware accepts 2 or 3 arguments, context is optional. Calling `.call` on `next_middleware` invokes the next middleware in the chain, returning the response from the database.
93
+
94
+ In this example, we're creating a middleware that will reorder any query. Next to reordering, we're adding an additional middleware that prints out the result of the reorder middleware.
93
95
 
94
96
  ```ruby
95
97
  class ReorderMiddleware
96
- def self.call(arel, _context)
98
+ def self.call(arel, next_middleware)
97
99
  enhanced_arel = Arel.enhance(arel)
98
100
  enhanced_arel.query(class: Arel::Nodes::SelectStatement).each do |node|
99
101
  arel_table = node.child_at_path(['cores', 0, 'source', 'left']).object
100
102
  node['orders'].replace([arel_table[:id].asc])
101
103
  end
102
104
 
103
- arel.order(Post.arel_table[:id].asc)
105
+ new_arel = arel.order(Post.arel_table[:id].asc)
106
+ next_middleware.call(new_arel)
104
107
  end
105
108
  end
106
109
 
107
110
  class LoggingMiddleware
108
- def self.call(arel, context)
111
+ def self.call(arel, next_middleware, context)
109
112
  puts "User executing query: `#{context[:current_user_id]}`"
110
113
  puts "Original SQL: `#{context[:original_sql]}`"
111
114
  puts "Modified SQL: `#{arel.to_sql}`"
112
-
113
- arel
115
+
116
+ next_middleware.call(arel)
114
117
  end
115
118
  end
116
119
  ```
data/Rakefile CHANGED
@@ -10,5 +10,15 @@ GitHubChangelogGenerator::RakeTask.new :changelog do |config|
10
10
  config.user = 'mvgijssel'
11
11
  config.project = 'arel_toolkit'
12
12
  config.future_release = "v#{ArelToolkit::VERSION}"
13
- config.pulls = false
13
+ config.add_pr_wo_labels = false
14
+ config.enhancement_labels = %w[enhancement dependencies]
15
+ config.exclude_tags = ['v0.1.0']
16
+ end
17
+
18
+ require 'rake/extensiontask'
19
+
20
+ task build: :compile
21
+
22
+ Rake::ExtensionTask.new('pg_result_init') do |ext|
23
+ ext.lib_dir = 'lib/arel_toolkit'
14
24
  end