arel_toolkit 0.2.0 → 0.4.3

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 (150) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +3 -0
  3. data/.github/workflows/develop.yml +90 -0
  4. data/.github/workflows/master.yml +67 -0
  5. data/.gitignore +8 -0
  6. data/.rubocop.yml +13 -2
  7. data/Appraisals +13 -0
  8. data/CHANGELOG.md +132 -6
  9. data/Gemfile +5 -0
  10. data/Gemfile.lock +92 -12
  11. data/Guardfile +23 -12
  12. data/README.md +104 -6
  13. data/Rakefile +18 -0
  14. data/arel_toolkit.gemspec +19 -4
  15. data/benchmark.rb +54 -0
  16. data/bin/console +1 -0
  17. data/ext/pg_result_init/extconf.rb +52 -0
  18. data/ext/pg_result_init/pg_result_init.c +138 -0
  19. data/ext/pg_result_init/pg_result_init.h +6 -0
  20. data/gemfiles/active_record_6.gemfile +7 -0
  21. data/gemfiles/active_record_6.gemfile.lock +210 -0
  22. data/gemfiles/arel_gems.gemfile +10 -0
  23. data/gemfiles/arel_gems.gemfile.lock +284 -0
  24. data/gemfiles/default.gemfile +5 -0
  25. data/gemfiles/default.gemfile.lock +208 -0
  26. data/lib/arel/enhance.rb +17 -0
  27. data/lib/arel/enhance/context_enhancer/arel_table.rb +92 -0
  28. data/lib/arel/enhance/node.rb +232 -0
  29. data/lib/arel/enhance/path.rb +38 -0
  30. data/lib/arel/enhance/path_node.rb +26 -0
  31. data/lib/arel/enhance/query.rb +38 -0
  32. data/lib/arel/enhance/query_methods.rb +23 -0
  33. data/lib/arel/enhance/visitor.rb +97 -0
  34. data/lib/arel/extensions.rb +55 -3
  35. data/lib/arel/extensions/active_model_attribute_with_cast_value.rb +22 -0
  36. data/lib/arel/extensions/active_record_relation_query_attribute.rb +22 -0
  37. data/lib/arel/extensions/active_record_type_caster_connection.rb +7 -0
  38. data/lib/arel/extensions/active_record_type_caster_map.rb +7 -0
  39. data/lib/arel/extensions/array.rb +2 -9
  40. data/lib/arel/extensions/assignment.rb +22 -0
  41. data/lib/arel/extensions/at_time_zone.rb +37 -0
  42. data/lib/arel/extensions/attributes_attribute.rb +47 -0
  43. data/lib/arel/extensions/binary.rb +7 -0
  44. data/lib/arel/extensions/bind_param.rb +15 -0
  45. data/lib/arel/extensions/bit_string.rb +2 -9
  46. data/lib/arel/extensions/case.rb +17 -0
  47. data/lib/arel/extensions/coalesce.rb +17 -3
  48. data/lib/arel/extensions/conflict.rb +9 -0
  49. data/lib/arel/extensions/contained_within_equals.rb +10 -0
  50. data/lib/arel/extensions/contains.rb +27 -5
  51. data/lib/arel/extensions/contains_equals.rb +10 -0
  52. data/lib/arel/extensions/current_catalog.rb +4 -0
  53. data/lib/arel/extensions/current_date.rb +4 -0
  54. data/lib/arel/extensions/current_of_expression.rb +2 -9
  55. data/lib/arel/extensions/current_role.rb +4 -0
  56. data/lib/arel/extensions/current_row.rb +7 -0
  57. data/lib/arel/extensions/current_schema.rb +4 -0
  58. data/lib/arel/extensions/current_user.rb +4 -0
  59. data/lib/arel/extensions/dealocate.rb +31 -0
  60. data/lib/arel/extensions/default_values.rb +4 -0
  61. data/lib/arel/extensions/delete_manager.rb +25 -0
  62. data/lib/arel/extensions/delete_statement.rb +32 -8
  63. data/lib/arel/extensions/distinct_from.rb +3 -16
  64. data/lib/arel/extensions/dot.rb +11 -0
  65. data/lib/arel/extensions/equality.rb +2 -4
  66. data/lib/arel/extensions/exists.rb +59 -0
  67. data/lib/arel/extensions/extract_from.rb +25 -0
  68. data/lib/arel/extensions/factorial.rb +10 -2
  69. data/lib/arel/extensions/false.rb +7 -0
  70. data/lib/arel/extensions/function.rb +44 -14
  71. data/lib/arel/extensions/greatest.rb +17 -3
  72. data/lib/arel/extensions/indirection.rb +3 -12
  73. data/lib/arel/extensions/infer.rb +7 -7
  74. data/lib/arel/extensions/infix_operation.rb +17 -0
  75. data/lib/arel/extensions/insert_manager.rb +21 -0
  76. data/lib/arel/extensions/insert_statement.rb +35 -9
  77. data/lib/arel/extensions/into.rb +21 -0
  78. data/lib/arel/extensions/json_get_field.rb +10 -0
  79. data/lib/arel/extensions/json_get_object.rb +10 -0
  80. data/lib/arel/extensions/json_path_get_field.rb +10 -0
  81. data/lib/arel/extensions/json_path_get_object.rb +10 -0
  82. data/lib/arel/extensions/jsonb_all_key_exists.rb +10 -0
  83. data/lib/arel/extensions/jsonb_any_key_exists.rb +10 -0
  84. data/lib/arel/extensions/jsonb_key_exists.rb +10 -0
  85. data/lib/arel/extensions/least.rb +17 -3
  86. data/lib/arel/extensions/named_argument.rb +24 -0
  87. data/lib/arel/extensions/named_function.rb +7 -0
  88. data/lib/arel/extensions/node.rb +10 -0
  89. data/lib/arel/extensions/not_distinct_from.rb +3 -16
  90. data/lib/arel/extensions/not_equal.rb +2 -4
  91. data/lib/arel/extensions/ordering.rb +21 -6
  92. data/lib/arel/extensions/overlap.rb +1 -1
  93. data/lib/arel/extensions/overlaps.rb +49 -0
  94. data/lib/arel/extensions/overlay.rb +53 -0
  95. data/lib/arel/extensions/position.rb +27 -0
  96. data/lib/arel/extensions/prepare.rb +39 -0
  97. data/lib/arel/extensions/range_function.rb +10 -2
  98. data/lib/arel/extensions/row.rb +3 -8
  99. data/lib/arel/extensions/select_core.rb +73 -0
  100. data/lib/arel/extensions/select_manager.rb +25 -0
  101. data/lib/arel/extensions/select_statement.rb +31 -9
  102. data/lib/arel/extensions/session_user.rb +4 -0
  103. data/lib/arel/extensions/set_to_default.rb +4 -0
  104. data/lib/arel/extensions/substring.rb +46 -0
  105. data/lib/arel/extensions/table.rb +43 -10
  106. data/lib/arel/extensions/time_with_precision.rb +6 -0
  107. data/lib/arel/extensions/to_sql.rb +27 -0
  108. data/lib/arel/extensions/top.rb +8 -0
  109. data/lib/arel/extensions/transaction.rb +45 -0
  110. data/lib/arel/extensions/tree_manager.rb +15 -0
  111. data/lib/arel/extensions/trim.rb +44 -0
  112. data/lib/arel/extensions/true.rb +7 -0
  113. data/lib/arel/extensions/type_cast.rb +11 -0
  114. data/lib/arel/extensions/unary.rb +7 -0
  115. data/lib/arel/extensions/unary_operation.rb +16 -0
  116. data/lib/arel/extensions/unknown.rb +4 -0
  117. data/lib/arel/extensions/update_manager.rb +25 -0
  118. data/lib/arel/extensions/update_statement.rb +31 -6
  119. data/lib/arel/extensions/user.rb +4 -0
  120. data/lib/arel/extensions/values_list.rb +15 -0
  121. data/lib/arel/extensions/variable_set.rb +55 -0
  122. data/lib/arel/extensions/variable_show.rb +26 -0
  123. data/lib/arel/middleware.rb +27 -0
  124. data/lib/arel/middleware/active_record_extension.rb +13 -0
  125. data/lib/arel/middleware/cache_accessor.rb +35 -0
  126. data/lib/arel/middleware/chain.rb +172 -0
  127. data/lib/arel/middleware/database_executor.rb +77 -0
  128. data/lib/arel/middleware/no_op_cache.rb +9 -0
  129. data/lib/arel/middleware/postgresql_adapter.rb +62 -0
  130. data/lib/arel/middleware/railtie.rb +25 -0
  131. data/lib/arel/middleware/result.rb +170 -0
  132. data/lib/arel/middleware/to_sql_executor.rb +15 -0
  133. data/lib/arel/middleware/to_sql_middleware.rb +33 -0
  134. data/lib/arel/sql_to_arel.rb +8 -4
  135. data/lib/arel/sql_to_arel/error.rb +6 -0
  136. data/lib/arel/sql_to_arel/pg_query_visitor.rb +324 -76
  137. data/lib/arel/sql_to_arel/pg_query_visitor/frame_options.rb +112 -0
  138. data/lib/arel/sql_to_arel/result.rb +30 -0
  139. data/lib/arel/transformer.rb +8 -0
  140. data/lib/arel/transformer/prefix_schema_name.rb +183 -0
  141. data/lib/arel/transformer/remove_active_record_info.rb +40 -0
  142. data/lib/arel/transformer/replace_table_with_subquery.rb +31 -0
  143. data/lib/arel_toolkit.rb +16 -1
  144. data/lib/arel_toolkit/version.rb +1 -1
  145. metadata +278 -25
  146. data/.travis.yml +0 -21
  147. data/lib/arel/extensions/generate_series.rb +0 -9
  148. data/lib/arel/extensions/rank.rb +0 -9
  149. data/lib/arel/sql_to_arel/frame_options.rb +0 -110
  150. data/lib/arel/sql_to_arel/unbound_column_reference.rb +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 71faaa5416ecd1e04fec3cbeb1ea22104738027adc65941630c5b3e98b87a666
4
- data.tar.gz: 15484e5f9677367fcd82291d29bd2a0f09c2d56634af5880f78e0f2cca532b55
3
+ metadata.gz: 28d6dfc92b5aebf97e6a22fa4ded2583f5d2184b1f0a8afc7ea4bc1951805b6d
4
+ data.tar.gz: 9c72d8926233ec968b2c864886a422848bb0fd85c7e2828e86db0b9cee21144a
5
5
  SHA512:
6
- metadata.gz: b452f4200412105997f2d68d22febe6d98fec579b734bf09aa9a3c1408b25e3d1fe744f8eb7a24bccaf8b3969afc05d1a04eccc8d194e6e7cabb39c5ab3ec74f
7
- data.tar.gz: 37f3fdc0e2612ab325247861b159c8621c66b46e07267b4c5d9e34eff19c3068117165c5a1adb803c086d144fd325bb813e67ff73370d925bf9bf283e2ff602e
6
+ metadata.gz: 7aaab2a35e519f4c85ce56135efa0374b8806318791913c351b797972827e0c10a5e4b9d17f6d21d8abed7508db17170a199ec4186dc16a9036a4e460a767ca0
7
+ data.tar.gz: 127121759494230ea9d82b7499812f942c44026f4ff7d22dc08b45d0b5a60ce1505b11bc4c6136391005aef17ef2932565e6266c189fd521c0869dac455bdf47
@@ -2,6 +2,9 @@ version: "2"
2
2
  plugins:
3
3
  rubocop:
4
4
  enabled: true
5
+ channel: rubocop-0-71
6
+ config:
7
+ file: .rubocop.yml
5
8
  bundler-audit:
6
9
  enabled: true
7
10
  fixme:
@@ -0,0 +1,90 @@
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
+ export GIT_AUTHOR_NAME=${CI_COMMIT_AUTHOR_NAME=GithubCI}
51
+ export GIT_AUTHOR_EMAIL=${CI_COMMIT_AUTHOR_EMAIL=ci@github.comm}
52
+ export GIT_COMMITTER_NAME=${GIT_AUTHOR_NAME}
53
+ export GIT_COMMITTER_EMAIL=${GIT_AUTHOR_EMAIL}
54
+ git fetch origin $GITHUB_REF
55
+ git rebase $GITHUB_SHA
56
+
57
+ - name: Set up Ruby 2.5.x
58
+ uses: actions/setup-ruby@v1
59
+ with:
60
+ ruby-version: 2.5.x
61
+
62
+ - name: Setup
63
+ run: |
64
+ curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
65
+ chmod +x ./cc-test-reporter
66
+ ./cc-test-reporter before-build
67
+
68
+ sudo apt-get install -y libpq-dev
69
+
70
+ gem install bundler
71
+
72
+ bundle install --jobs 4 --retry 3
73
+ bundle exec appraisal install
74
+
75
+ bundle exec rake clean
76
+ bundle exec rake compile
77
+
78
+ - name: RSpec
79
+ run: |
80
+ bundle exec appraisal rspec --force-color
81
+
82
+ - name: Report to codeclimate
83
+ if: always() && matrix.codeclimate
84
+ shell: bash
85
+ env:
86
+ JOB_STATUS: ${{ job.status == 'Success' }}
87
+ CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
88
+ run: |
89
+ EXIT_CODE=$([[ "$JOB_STATUS" == true ]] && echo 0 || echo 1)
90
+ ./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,11 +6,19 @@
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
12
16
 
17
+ # approvals gem
18
+ .approvals
19
+
13
20
  *.temp
14
21
  # emacs
15
22
  TAGS
16
23
  .#*
24
+ stackprof.json
@@ -1,5 +1,7 @@
1
- Style/FrozenStringLiteralComment:
2
- Enabled: false
1
+ AllCops:
2
+ Exclude:
3
+ - 'gemfiles/arel_gems.gemfile'
4
+ - 'gemfiles/default.gemfile'
3
5
 
4
6
  Bundler/OrderedGems:
5
7
  Enabled: false
@@ -23,12 +25,21 @@ Metrics/BlockLength:
23
25
  Style/Documentation:
24
26
  Enabled: false
25
27
 
28
+ Style/MultilineBlockChain:
29
+ Enabled: false
30
+
31
+ Style/TrailingCommaInHashLiteral:
32
+ EnforcedStyleForMultiline: comma
33
+
26
34
  Style/TrailingCommaInArrayLiteral:
27
35
  EnforcedStyleForMultiline: comma
28
36
 
29
37
  Style/TrailingCommaInArguments:
30
38
  EnforcedStyleForMultiline: comma
31
39
 
40
+ Style/FrozenStringLiteralComment:
41
+ Enabled: false
42
+
32
43
  Layout/MultilineMethodCallIndentation:
33
44
  Enabled: true
34
45
  EnforcedStyle: indented
@@ -0,0 +1,13 @@
1
+ appraise 'arel_gems' do
2
+ gem 'postgres_ext', github: 'Hacker0x01/postgres_ext', branch: 'rails-5.2'
3
+ gem 'active_record_upsert', github: 'Hacker0x01/active_record_upsert', branch: 'master'
4
+ gem 'pg_search', github: 'Hacker0x01/pg_search', branch: 'update-ranking'
5
+ gem 'rspec-rails', '~> 3.8.0'
6
+ end
7
+
8
+ appraise 'default' do
9
+ end
10
+
11
+ appraise 'active_record_6' do
12
+ gem 'activerecord', '~> 6.0.0'
13
+ end
@@ -1,10 +1,136 @@
1
1
  # Changelog
2
2
 
3
- ## 0.2.0 (31st of May 2019)
3
+ ## [v0.4.3](https://github.com/mvgijssel/arel_toolkit/tree/v0.4.3) (2020-11-09)
4
4
 
5
- ### New features
5
+ [Full Changelog](https://github.com/mvgijssel/arel_toolkit/compare/v0.4.2...v0.4.3)
6
6
 
7
- - Support generating Arel::InsertManager from PostgresQL INSERT statements
8
- - Support generating Arel::SelectManager from PostgresQL SELECT statements
9
- - Support generating Arel::UpdateManager from PostgresQL UPDATE statements
10
- - Support generating Arel::DeleteManager from PostgresQL DELETE statements
7
+ **Implemented enhancements:**
8
+
9
+ - Upgrade active\_record to 6 [\#167](https://github.com/mvgijssel/arel_toolkit/pull/167) ([khaleksa](https://github.com/khaleksa))
10
+ - Bump json from 2.2.0 to 2.3.1 [\#166](https://github.com/mvgijssel/arel_toolkit/pull/166) ([dependabot[bot]](https://github.com/apps/dependabot))
11
+ - Bump activesupport from 5.2.3 to 5.2.4.3 [\#165](https://github.com/mvgijssel/arel_toolkit/pull/165) ([dependabot[bot]](https://github.com/apps/dependabot))
12
+ - Update rake requirement from ~\> 10.0 to ~\> 13.0 [\#161](https://github.com/mvgijssel/arel_toolkit/pull/161) ([dependabot[bot]](https://github.com/apps/dependabot))
13
+ - Bump nokogiri from 1.10.4 to 1.10.8 [\#160](https://github.com/mvgijssel/arel_toolkit/pull/160) ([dependabot[bot]](https://github.com/apps/dependabot))
14
+ - Adds cache mechanism to middleware [\#154](https://github.com/mvgijssel/arel_toolkit/pull/154) ([Willianvdv](https://github.com/Willianvdv))
15
+
16
+ ## [v0.4.2](https://github.com/mvgijssel/arel_toolkit/tree/v0.4.2) (2020-01-08)
17
+
18
+ [Full Changelog](https://github.com/mvgijssel/arel_toolkit/compare/v0.4.1...v0.4.2)
19
+
20
+ **Breaking changes:**
21
+
22
+ - Remove path, inline visit and improve recursion for improved performance [\#152](https://github.com/mvgijssel/arel_toolkit/pull/152) ([Willianvdv](https://github.com/Willianvdv))
23
+
24
+ **Implemented enhancements:**
25
+
26
+ - Validate whether setting a session variable transformation does the right thing [\#155](https://github.com/mvgijssel/arel_toolkit/issues/155)
27
+ - Add ability to mutate nodes with precomputed Arel::Nodes::Enhance [\#158](https://github.com/mvgijssel/arel_toolkit/pull/158) ([mvgijssel](https://github.com/mvgijssel))
28
+
29
+ ## [v0.4.1](https://github.com/mvgijssel/arel_toolkit/tree/v0.4.1) (2019-11-13)
30
+
31
+ [Full Changelog](https://github.com/mvgijssel/arel_toolkit/compare/v0.4.0...v0.4.1)
32
+
33
+ **Implemented enhancements:**
34
+
35
+ - Create a transformer that replaces a table reference with a subquery [\#141](https://github.com/mvgijssel/arel_toolkit/issues/141)
36
+ - Same signature for all middleware helpers [\#135](https://github.com/mvgijssel/arel_toolkit/issues/135)
37
+ - Instantiate PG::Result object instead of duck typed object [\#130](https://github.com/mvgijssel/arel_toolkit/issues/130)
38
+ - Add `to\_sql` to Arel.middleware which prints the sql after middleware processing [\#127](https://github.com/mvgijssel/arel_toolkit/issues/127)
39
+ - Extend Middleware to include the response from the database [\#126](https://github.com/mvgijssel/arel_toolkit/issues/126)
40
+ - Extend AddSchemaToTable to support multiple schemas and regclass typecasts [\#124](https://github.com/mvgijssel/arel_toolkit/issues/124)
41
+ - Optional context argument for Arel middleware [\#110](https://github.com/mvgijssel/arel_toolkit/issues/110)
42
+ - Handle is\_rowsfrom in pg\_query\_visitor\#visit\_RangeFunction [\#36](https://github.com/mvgijssel/arel_toolkit/issues/36)
43
+ - 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))
44
+
45
+ **Fixed bugs:**
46
+
47
+ - Bundle install fails with missing arel\_toolkit/pg\_result\_init [\#148](https://github.com/mvgijssel/arel_toolkit/issues/148)
48
+ - Handle column reference with 3 \(or more\) fields [\#145](https://github.com/mvgijssel/arel_toolkit/issues/145)
49
+ - Error when aliasing a range select [\#144](https://github.com/mvgijssel/arel_toolkit/issues/144)
50
+ - Make sure the method signatures of PostgreSQLAdapter match [\#122](https://github.com/mvgijssel/arel_toolkit/issues/122)
51
+ - Fix missing middleware method and fix \(again\) infinite middleware recursion [\#120](https://github.com/mvgijssel/arel_toolkit/issues/120)
52
+ - Use named window with OVER. [\#149](https://github.com/mvgijssel/arel_toolkit/pull/149) ([khaleksa](https://github.com/khaleksa))
53
+
54
+ ## [v0.4.0](https://github.com/mvgijssel/arel_toolkit/tree/v0.4.0) (2019-07-31)
55
+
56
+ [Full Changelog](https://github.com/mvgijssel/arel_toolkit/compare/v0.3.0...v0.4.0)
57
+
58
+ **Implemented enhancements:**
59
+
60
+ - Replace Arel::Nodes::UnboundColumnReference with Arel::Nodes::UnqualifiedColumn [\#91](https://github.com/mvgijssel/arel_toolkit/issues/91)
61
+ - Add brakeman to check for security vulnerabilities [\#10](https://github.com/mvgijssel/arel_toolkit/issues/10)
62
+ - Rename Arel.transformer to Arel.enhance [\#111](https://github.com/mvgijssel/arel_toolkit/issues/111)
63
+ - Ability to query an Arel transformer tree [\#103](https://github.com/mvgijssel/arel_toolkit/issues/103)
64
+ - Implement PREPARE and DEALLOCATE statement [\#101](https://github.com/mvgijssel/arel_toolkit/issues/101)
65
+ - Create Arel transformer class to safely and easily mutate an Arel AST [\#89](https://github.com/mvgijssel/arel_toolkit/issues/89)
66
+ - Test and verify compatibility with Arel extension gems [\#81](https://github.com/mvgijssel/arel_toolkit/issues/81)
67
+ - Automatically load Railtie when gem is included in Rails [\#66](https://github.com/mvgijssel/arel_toolkit/issues/66)
68
+ - Create remove ActiveRecord specifics transformer [\#63](https://github.com/mvgijssel/arel_toolkit/issues/63)
69
+
70
+ **Fixed bugs:**
71
+
72
+ - TypeError: superclass mismatch for class Overlap [\#93](https://github.com/mvgijssel/arel_toolkit/issues/93)
73
+
74
+ ## [v0.3.0](https://github.com/mvgijssel/arel_toolkit/tree/v0.3.0) (2019-07-01)
75
+
76
+ [Full Changelog](https://github.com/mvgijssel/arel_toolkit/compare/v0.2.0...v0.3.0)
77
+
78
+ **Implemented enhancements:**
79
+
80
+ - Implement Functions and Operators from PostgreSQL docs [\#84](https://github.com/mvgijssel/arel_toolkit/issues/84)
81
+ - Implement more missing operators and visitors [\#82](https://github.com/mvgijssel/arel_toolkit/issues/82)
82
+ - Improve error message when unable to parse sql to arel [\#71](https://github.com/mvgijssel/arel_toolkit/issues/71)
83
+ - Publish coverage information to GitHub pages [\#64](https://github.com/mvgijssel/arel_toolkit/issues/64)
84
+ - Add ActiveRecord comparison testing [\#61](https://github.com/mvgijssel/arel_toolkit/issues/61)
85
+ - Make Arel::TreeManager equal to other trees [\#59](https://github.com/mvgijssel/arel_toolkit/issues/59)
86
+ - Add support for Arel.middleware [\#52](https://github.com/mvgijssel/arel_toolkit/issues/52)
87
+ - Handle multiple tree entries in pg\_query\_visitor\#accept [\#33](https://github.com/mvgijssel/arel_toolkit/issues/33)
88
+
89
+ **Fixed bugs:**
90
+
91
+ - Fix invalid generated SQL, add missing visitors and extend operators [\#79](https://github.com/mvgijssel/arel_toolkit/issues/79)
92
+ - Fix handling of equality with Arel::Nodes::Quoted [\#77](https://github.com/mvgijssel/arel_toolkit/issues/77)
93
+ - Fix default values for Delete- and UpdateStatement [\#75](https://github.com/mvgijssel/arel_toolkit/issues/75)
94
+ - Unknown operator `` for IN statement [\#73](https://github.com/mvgijssel/arel_toolkit/issues/73)
95
+ - NameError: undefined local variable or method `number' for \#\<Arel::SqlToArel::PgQueryVisitor:0x000055dfdd14c6f8\> [\#69](https://github.com/mvgijssel/arel_toolkit/issues/69)
96
+ - Make compatible with postgres\_ext [\#67](https://github.com/mvgijssel/arel_toolkit/issues/67)
97
+
98
+ **Closed issues:**
99
+
100
+ - File issues for commented out rspec test [\#51](https://github.com/mvgijssel/arel_toolkit/issues/51)
101
+
102
+ ## [v0.2.0](https://github.com/mvgijssel/arel_toolkit/tree/v0.2.0) (2019-05-30)
103
+
104
+ [Full Changelog](https://github.com/mvgijssel/arel_toolkit/compare/v0.1.0...v0.2.0)
105
+
106
+ **Implemented enhancements:**
107
+
108
+ - Handle op in pg\_query\_visitor\#visit\_SelectStmt [\#38](https://github.com/mvgijssel/arel_toolkit/issues/38)
109
+ - Introduce Guard [\#5](https://github.com/mvgijssel/arel_toolkit/issues/5)
110
+ - Add WITH, OVERRIDING and RETURNING to INSERT [\#28](https://github.com/mvgijssel/arel_toolkit/issues/28)
111
+ - Return \(Select|Update|Insert|Delete\)Manager instead of \(Select|Update|Insert|Delete\)Statement [\#25](https://github.com/mvgijssel/arel_toolkit/issues/25)
112
+ - Implement UNION in sql\_to\_arel [\#24](https://github.com/mvgijssel/arel_toolkit/issues/24)
113
+ - Extract Arel extensions to their own files [\#23](https://github.com/mvgijssel/arel_toolkit/issues/23)
114
+ - Implement pg\_query\_visitor method for DELETE [\#22](https://github.com/mvgijssel/arel_toolkit/issues/22)
115
+ - Implement pg\_query\_visitor method for INSERT [\#21](https://github.com/mvgijssel/arel_toolkit/issues/21)
116
+ - Implement pg\_query\_visitor method for UPDATE [\#20](https://github.com/mvgijssel/arel_toolkit/issues/20)
117
+ - Implement all the visitor methods in PgQueryVisitor for SELECT statements [\#11](https://github.com/mvgijssel/arel_toolkit/issues/11)
118
+ - 22/implement delete [\#30](https://github.com/mvgijssel/arel_toolkit/pull/30) ([mvgijssel](https://github.com/mvgijssel))
119
+ - Added WITH, OVERRIDING and RETURINING to INSERT [\#29](https://github.com/mvgijssel/arel_toolkit/pull/29) ([mvgijssel](https://github.com/mvgijssel))
120
+ - Added badges to README \(and fix setup\) [\#3](https://github.com/mvgijssel/arel_toolkit/pull/3) ([mvgijssel](https://github.com/mvgijssel))
121
+ - Configure codeclimate [\#2](https://github.com/mvgijssel/arel_toolkit/pull/2) ([mvgijssel](https://github.com/mvgijssel))
122
+ - Updated travis file [\#1](https://github.com/mvgijssel/arel_toolkit/pull/1) ([mvgijssel](https://github.com/mvgijssel))
123
+
124
+ **Fixed bugs:**
125
+
126
+ - Fix CodeClimate coverage [\#8](https://github.com/mvgijssel/arel_toolkit/issues/8)
127
+
128
+ **Closed issues:**
129
+
130
+ - Remove unnecessary to\_arel remains [\#15](https://github.com/mvgijssel/arel_toolkit/issues/15)
131
+ - Merge to\_arel gem [\#4](https://github.com/mvgijssel/arel_toolkit/issues/4)
132
+ - Create issues for unknown branches in pg\_query\_visitor [\#19](https://github.com/mvgijssel/arel_toolkit/issues/19)
133
+
134
+
135
+
136
+ \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
data/Gemfile CHANGED
@@ -1,4 +1,9 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ git_source(:github) do |repo_name|
4
+ repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?('/')
5
+ "https://github.com/#{repo_name}.git"
6
+ end
7
+
3
8
  # Specify your gem's dependencies in arel_toolkit.gemspec
4
9
  gemspec
@@ -1,24 +1,60 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- arel_toolkit (0.2.0)
5
- arel (~> 9.0.0)
6
- pg_query (~> 1.1.0)
4
+ arel_toolkit (0.4.3)
5
+ activerecord
6
+ pg (~> 1.1.4)
7
+ pg_query (~> 1.2.0)
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
10
11
  specs:
12
+ activemodel (5.2.4.3)
13
+ activesupport (= 5.2.4.3)
14
+ activerecord (5.2.4.3)
15
+ activemodel (= 5.2.4.3)
16
+ activesupport (= 5.2.4.3)
17
+ arel (>= 9.0)
18
+ activesupport (5.2.4.3)
19
+ concurrent-ruby (~> 1.0, >= 1.0.2)
20
+ i18n (>= 0.7, < 2)
21
+ minitest (~> 5.1)
22
+ tzinfo (~> 1.1)
23
+ addressable (2.7.0)
24
+ public_suffix (>= 2.0.2, < 5.0)
11
25
  ansi (1.5.0)
26
+ appraisal (2.2.0)
27
+ bundler
28
+ rake
29
+ thor (>= 0.14.0)
30
+ approvals (0.0.24)
31
+ nokogiri (~> 1.6)
32
+ thor (~> 0.18)
12
33
  arel (9.0.0)
13
34
  ast (2.4.0)
14
35
  binding_of_caller (0.8.0)
15
36
  debug_inspector (>= 0.0.1)
16
37
  coderay (1.1.2)
38
+ concurrent-ruby (1.1.6)
39
+ database_cleaner (1.7.0)
17
40
  debug_inspector (0.0.3)
18
41
  diff-lcs (1.3)
19
42
  docile (1.3.1)
43
+ dpl (1.10.11)
44
+ faraday (0.17.0)
45
+ multipart-post (>= 1.2, < 3)
46
+ faraday-http-cache (2.0.0)
47
+ faraday (~> 0.8)
20
48
  ffi (1.11.1)
21
49
  formatador (0.2.5)
50
+ github_changelog_generator (1.15.0)
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)
22
58
  guard (2.15.0)
23
59
  formatador (>= 0.2.4)
24
60
  listen (>= 2.7, < 4.0)
@@ -29,34 +65,55 @@ GEM
29
65
  shellany (~> 0.0)
30
66
  thor (>= 0.18.1)
31
67
  guard-compat (1.2.1)
68
+ guard-rake (1.0.0)
69
+ guard
70
+ rake
32
71
  guard-rspec (4.7.3)
33
72
  guard (~> 2.1)
34
73
  guard-compat (~> 1.1)
35
74
  rspec (>= 2.99.0, < 4.0)
75
+ guard-rubocop (1.3.0)
76
+ guard (~> 2.0)
77
+ rubocop (~> 0.20)
36
78
  hirb (0.7.3)
79
+ i18n (1.8.2)
80
+ concurrent-ruby (~> 1.0)
37
81
  interception (0.5)
38
- jaro_winkler (1.5.2)
39
- json (2.2.0)
82
+ jaro_winkler (1.5.3)
83
+ json (2.3.1)
40
84
  listen (3.1.5)
41
85
  rb-fsevent (~> 0.9, >= 0.9.4)
42
86
  rb-inotify (~> 0.9, >= 0.9.7)
43
87
  ruby_dep (~> 1.2)
44
88
  lumberjack (1.0.13)
89
+ memory_profiler (0.9.14)
45
90
  method_source (0.9.2)
91
+ mini_portile2 (2.4.0)
92
+ minitest (5.14.1)
93
+ multi_json (1.14.1)
94
+ multipart-post (2.1.1)
46
95
  nenv (0.3.0)
96
+ nokogiri (1.10.8)
97
+ mini_portile2 (~> 2.4.0)
47
98
  notiffany (0.1.1)
48
99
  nenv (~> 0.1)
49
100
  shellany (~> 0.0)
101
+ octokit (4.14.0)
102
+ sawyer (~> 0.8.0, >= 0.5.3)
50
103
  parallel (1.17.0)
51
104
  parser (2.6.3.0)
52
105
  ast (~> 2.4.0)
53
- pg_query (1.1.0)
106
+ pg (1.1.4)
107
+ pg_query (1.2.0)
54
108
  pry (0.12.2)
55
109
  coderay (~> 1.1.0)
56
110
  method_source (~> 0.9.0)
57
111
  pry-alias (0.0.1)
58
112
  binding_of_caller
59
113
  pry
114
+ pry-doc (1.0.0)
115
+ pry (~> 0.11)
116
+ yard (~> 0.9.11)
60
117
  pry-nav (0.3.0)
61
118
  pry (>= 0.9.10, < 0.13.0)
62
119
  pry-rescue (1.5.0)
@@ -65,11 +122,15 @@ GEM
65
122
  pry-stack_explorer (0.4.9.3)
66
123
  binding_of_caller (>= 0.7)
67
124
  pry (>= 0.9.11)
125
+ public_suffix (4.0.1)
68
126
  rainbow (3.0.0)
69
- rake (10.5.0)
127
+ rake (13.0.1)
128
+ rake-compiler (1.0.7)
129
+ rake
70
130
  rb-fsevent (0.10.3)
71
131
  rb-inotify (0.10.0)
72
132
  ffi (~> 1.0)
133
+ retriable (3.1.2)
73
134
  rspec (3.8.0)
74
135
  rspec-core (~> 3.8.0)
75
136
  rspec-expectations (~> 3.8.0)
@@ -83,15 +144,18 @@ GEM
83
144
  diff-lcs (>= 1.2.0, < 2.0)
84
145
  rspec-support (~> 3.8.0)
85
146
  rspec-support (3.8.0)
86
- rubocop (0.69.0)
147
+ rubocop (0.71.0)
87
148
  jaro_winkler (~> 1.5.1)
88
149
  parallel (~> 1.10)
89
150
  parser (>= 2.6)
90
151
  rainbow (>= 2.2.2, < 4.0)
91
152
  ruby-progressbar (~> 1.7)
92
153
  unicode-display_width (>= 1.4.0, < 1.7)
93
- ruby-progressbar (1.10.0)
154
+ ruby-progressbar (1.10.1)
94
155
  ruby_dep (1.5.0)
156
+ sawyer (0.8.2)
157
+ addressable (>= 2.3.5)
158
+ faraday (> 0.8, < 2.0)
95
159
  shellany (0.0.1)
96
160
  simplecov (0.16.1)
97
161
  docile (~> 1.1)
@@ -102,27 +166,43 @@ GEM
102
166
  hirb
103
167
  simplecov
104
168
  simplecov-html (0.10.2)
169
+ stackprof (0.2.13)
105
170
  thor (0.20.3)
171
+ thread_safe (0.3.6)
172
+ tzinfo (1.2.7)
173
+ thread_safe (~> 0.1)
106
174
  unicode-display_width (1.6.0)
175
+ yard (0.9.20)
107
176
 
108
177
  PLATFORMS
109
178
  ruby
110
179
 
111
180
  DEPENDENCIES
181
+ appraisal (~> 2.2.0)
182
+ approvals (~> 0.0.24)
112
183
  arel_toolkit!
113
184
  bundler (~> 2.0)
185
+ database_cleaner (~> 1.7.0)
186
+ dpl (~> 1.10.11)
187
+ github_changelog_generator (~> 1.15)
114
188
  guard (~> 2.15)
189
+ guard-rake (~> 1.0.0)
115
190
  guard-rspec (~> 4.7)
191
+ guard-rubocop (~> 1.3.0)
192
+ memory_profiler (~> 0.9)
116
193
  pry
117
194
  pry-alias
195
+ pry-doc
118
196
  pry-nav
119
197
  pry-rescue
120
198
  pry-stack_explorer
121
- rake (~> 10.0)
199
+ rake (~> 13.0)
200
+ rake-compiler (~> 1.0)
122
201
  rspec (~> 3.8)
123
- rubocop (~> 0.69)
202
+ rubocop (= 0.71.0)
124
203
  simplecov (~> 0.16.1)
125
204
  simplecov-console (~> 0.4.2)
205
+ stackprof (~> 0.2)
126
206
 
127
207
  BUNDLED WITH
128
- 2.0.1
208
+ 2.1.4