arel_extensions 1.5.3 → 2.0.0.rc3

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 (141) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +2 -1
  3. data/.gitignore +6 -7
  4. data/.rubocop.yml +3 -67
  5. data/.travis/oracle/download.js +152 -0
  6. data/.travis/oracle/download.sh +30 -0
  7. data/.travis/oracle/download_ojdbc.js +116 -0
  8. data/.travis/oracle/install.sh +34 -0
  9. data/.travis/setup_accounts.sh +9 -0
  10. data/.travis/sqlite3/extension-functions.sh +6 -0
  11. data/.travis.yml +223 -0
  12. data/Gemfile +28 -2
  13. data/README.md +90 -239
  14. data/Rakefile +30 -48
  15. data/TODO +1 -0
  16. data/appveyor.yml +22 -60
  17. data/arel_extensions.gemspec +14 -13
  18. data/functions.html +3 -3
  19. data/gemfiles/rails3.gemfile +10 -10
  20. data/gemfiles/rails4.gemfile +29 -0
  21. data/gemfiles/rails5_0.gemfile +29 -0
  22. data/gemfiles/rails5_1_4.gemfile +14 -14
  23. data/gemfiles/rails5_2.gemfile +14 -16
  24. data/init/mssql.sql +4 -4
  25. data/init/mysql.sql +38 -38
  26. data/init/oracle.sql +0 -0
  27. data/init/postgresql.sql +25 -24
  28. data/init/sqlite.sql +0 -0
  29. data/lib/arel_extensions/attributes.rb +3 -7
  30. data/lib/arel_extensions/boolean_functions.rb +14 -53
  31. data/lib/arel_extensions/common_sql_functions.rb +17 -16
  32. data/lib/arel_extensions/comparators.rb +28 -29
  33. data/lib/arel_extensions/date_duration.rb +13 -17
  34. data/lib/arel_extensions/insert_manager.rb +15 -18
  35. data/lib/arel_extensions/math.rb +53 -55
  36. data/lib/arel_extensions/math_functions.rb +39 -46
  37. data/lib/arel_extensions/nodes/abs.rb +1 -0
  38. data/lib/arel_extensions/nodes/blank.rb +2 -1
  39. data/lib/arel_extensions/nodes/case.rb +19 -20
  40. data/lib/arel_extensions/nodes/cast.rb +8 -10
  41. data/lib/arel_extensions/nodes/ceil.rb +1 -1
  42. data/lib/arel_extensions/nodes/coalesce.rb +4 -3
  43. data/lib/arel_extensions/nodes/collate.rb +10 -9
  44. data/lib/arel_extensions/nodes/concat.rb +18 -9
  45. data/lib/arel_extensions/nodes/date_diff.rb +26 -42
  46. data/lib/arel_extensions/nodes/duration.rb +3 -0
  47. data/lib/arel_extensions/nodes/find_in_set.rb +1 -0
  48. data/lib/arel_extensions/nodes/floor.rb +1 -1
  49. data/lib/arel_extensions/nodes/format.rb +8 -35
  50. data/lib/arel_extensions/nodes/formatted_number.rb +23 -22
  51. data/lib/arel_extensions/nodes/function.rb +37 -48
  52. data/lib/arel_extensions/nodes/is_null.rb +0 -0
  53. data/lib/arel_extensions/nodes/json.rb +39 -52
  54. data/lib/arel_extensions/nodes/length.rb +0 -5
  55. data/lib/arel_extensions/nodes/levenshtein_distance.rb +1 -1
  56. data/lib/arel_extensions/nodes/locate.rb +2 -1
  57. data/lib/arel_extensions/nodes/log10.rb +2 -1
  58. data/lib/arel_extensions/nodes/matches.rb +7 -5
  59. data/lib/arel_extensions/nodes/md5.rb +1 -0
  60. data/lib/arel_extensions/nodes/power.rb +5 -5
  61. data/lib/arel_extensions/nodes/rand.rb +1 -0
  62. data/lib/arel_extensions/nodes/repeat.rb +5 -3
  63. data/lib/arel_extensions/nodes/replace.rb +8 -16
  64. data/lib/arel_extensions/nodes/round.rb +6 -5
  65. data/lib/arel_extensions/nodes/soundex.rb +15 -15
  66. data/lib/arel_extensions/nodes/std.rb +21 -18
  67. data/lib/arel_extensions/nodes/substring.rb +16 -8
  68. data/lib/arel_extensions/nodes/then.rb +1 -1
  69. data/lib/arel_extensions/nodes/trim.rb +6 -4
  70. data/lib/arel_extensions/nodes/union.rb +8 -5
  71. data/lib/arel_extensions/nodes/union_all.rb +7 -4
  72. data/lib/arel_extensions/nodes/wday.rb +4 -0
  73. data/lib/arel_extensions/nodes.rb +1 -1
  74. data/lib/arel_extensions/null_functions.rb +5 -19
  75. data/lib/arel_extensions/predications.rb +43 -44
  76. data/lib/arel_extensions/railtie.rb +5 -5
  77. data/lib/arel_extensions/set_functions.rb +7 -5
  78. data/lib/arel_extensions/string_functions.rb +36 -82
  79. data/lib/arel_extensions/tasks.rb +6 -6
  80. data/lib/arel_extensions/version.rb +1 -1
  81. data/lib/arel_extensions/visitors/ibm_db.rb +31 -24
  82. data/lib/arel_extensions/visitors/mssql.rb +192 -423
  83. data/lib/arel_extensions/visitors/mysql.rb +212 -354
  84. data/lib/arel_extensions/visitors/oracle.rb +178 -221
  85. data/lib/arel_extensions/visitors/oracle12.rb +31 -18
  86. data/lib/arel_extensions/visitors/postgresql.rb +173 -257
  87. data/lib/arel_extensions/visitors/sqlite.rb +126 -140
  88. data/lib/arel_extensions/visitors/to_sql.rb +237 -299
  89. data/lib/arel_extensions/visitors.rb +62 -83
  90. data/lib/arel_extensions.rb +31 -226
  91. data/test/database.yml +7 -15
  92. data/test/helper.rb +18 -0
  93. data/test/real_db_test.rb +117 -120
  94. data/test/support/fake_record.rb +3 -9
  95. data/test/test_comparators.rb +17 -14
  96. data/test/visitors/test_bulk_insert_oracle.rb +11 -11
  97. data/test/visitors/test_bulk_insert_sqlite.rb +13 -12
  98. data/test/visitors/test_bulk_insert_to_sql.rb +13 -11
  99. data/test/visitors/test_oracle.rb +55 -55
  100. data/test/visitors/test_to_sql.rb +226 -419
  101. data/test/with_ar/all_agnostic_test.rb +366 -721
  102. data/test/with_ar/insert_agnostic_test.rb +21 -27
  103. data/test/with_ar/test_bulk_sqlite.rb +16 -17
  104. data/test/with_ar/test_math_sqlite.rb +26 -26
  105. data/test/with_ar/test_string_mysql.rb +33 -31
  106. data/test/with_ar/test_string_sqlite.rb +34 -30
  107. metadata +37 -47
  108. data/.github/workflows/publish.yml +0 -30
  109. data/.github/workflows/release.yml +0 -30
  110. data/.github/workflows/ruby.yml +0 -403
  111. data/CONTRIBUTING.md +0 -102
  112. data/NEWS.md +0 -109
  113. data/bin/build +0 -15
  114. data/bin/compose +0 -6
  115. data/bin/publish +0 -8
  116. data/dev/arelx.dockerfile +0 -44
  117. data/dev/compose.yaml +0 -71
  118. data/dev/postgres.dockerfile +0 -5
  119. data/dev/rbenv +0 -189
  120. data/gemfiles/rails4_2.gemfile +0 -38
  121. data/gemfiles/rails5.gemfile +0 -29
  122. data/gemfiles/rails6.gemfile +0 -34
  123. data/gemfiles/rails6_1.gemfile +0 -42
  124. data/gemfiles/rails7.gemfile +0 -42
  125. data/gemfiles/rails7_1.gemfile +0 -41
  126. data/gemfiles/rails7_2.gemfile +0 -41
  127. data/gemspecs/arel_extensions-v1.gemspec +0 -27
  128. data/gemspecs/arel_extensions-v2.gemspec +0 -27
  129. data/generate_gems.sh +0 -15
  130. data/lib/arel_extensions/aliases.rb +0 -14
  131. data/lib/arel_extensions/helpers.rb +0 -62
  132. data/lib/arel_extensions/nodes/aggregate_function.rb +0 -13
  133. data/lib/arel_extensions/nodes/formatted_date.rb +0 -42
  134. data/lib/arel_extensions/nodes/rollup.rb +0 -36
  135. data/lib/arel_extensions/nodes/select.rb +0 -10
  136. data/lib/arel_extensions/nodes/sum.rb +0 -7
  137. data/lib/arel_extensions/visitors/convert_format.rb +0 -37
  138. data/lib/arel_extensions/warning.rb +0 -42
  139. data/test/arelx_test_helper.rb +0 -92
  140. data/version_v1.rb +0 -3
  141. data/version_v2.rb +0 -3
metadata CHANGED
@@ -1,31 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arel_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.3
4
+ version: 2.0.0.rc3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yann Azoury
8
8
  - Félix Bellanger
9
9
  - Julien Delporte
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2025-02-11 00:00:00.000000000 Z
13
+ date: 2019-08-12 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: arel
16
+ name: activerecord
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
19
  - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: '6.0'
21
+ version: 6.0.0.rc2
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
- version: '6.0'
28
+ version: 6.0.0.rc2
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: minitest
31
31
  requirement: !ruby/object:Gem::Requirement
@@ -40,20 +40,34 @@ dependencies:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
42
  version: '5.9'
43
+ - !ruby/object:Gem::Dependency
44
+ name: rdoc
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '4.0'
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '4.0'
43
57
  - !ruby/object:Gem::Dependency
44
58
  name: rake
45
59
  requirement: !ruby/object:Gem::Requirement
46
60
  requirements:
47
61
  - - "~>"
48
62
  - !ruby/object:Gem::Version
49
- version: 12.3.3
63
+ version: '11'
50
64
  type: :development
51
65
  prerelease: false
52
66
  version_requirements: !ruby/object:Gem::Requirement
53
67
  requirements:
54
68
  - - "~>"
55
69
  - !ruby/object:Gem::Version
56
- version: 12.3.3
70
+ version: '11'
57
71
  description: Adds new features to Arel
58
72
  email:
59
73
  - yann.azoury@faveod.com
@@ -67,61 +81,45 @@ extra_rdoc_files:
67
81
  - functions.html
68
82
  files:
69
83
  - ".codeclimate.yml"
70
- - ".github/workflows/publish.yml"
71
- - ".github/workflows/release.yml"
72
- - ".github/workflows/ruby.yml"
73
84
  - ".gitignore"
74
85
  - ".rubocop.yml"
75
- - CONTRIBUTING.md
86
+ - ".travis.yml"
87
+ - ".travis/oracle/download.js"
88
+ - ".travis/oracle/download.sh"
89
+ - ".travis/oracle/download_ojdbc.js"
90
+ - ".travis/oracle/install.sh"
91
+ - ".travis/setup_accounts.sh"
92
+ - ".travis/sqlite3/extension-functions.sh"
76
93
  - Gemfile
77
94
  - MIT-LICENSE.txt
78
- - NEWS.md
79
95
  - README.md
80
96
  - Rakefile
81
97
  - SQL_Challenges.md
82
98
  - TODO
83
99
  - appveyor.yml
84
100
  - arel_extensions.gemspec
85
- - bin/build
86
- - bin/compose
87
- - bin/publish
88
- - dev/arelx.dockerfile
89
- - dev/compose.yaml
90
- - dev/postgres.dockerfile
91
- - dev/rbenv
92
101
  - functions.html
93
102
  - gemfiles/rails3.gemfile
94
- - gemfiles/rails4_2.gemfile
95
- - gemfiles/rails5.gemfile
103
+ - gemfiles/rails4.gemfile
104
+ - gemfiles/rails5_0.gemfile
96
105
  - gemfiles/rails5_1_4.gemfile
97
106
  - gemfiles/rails5_2.gemfile
98
- - gemfiles/rails6.gemfile
99
- - gemfiles/rails6_1.gemfile
100
- - gemfiles/rails7.gemfile
101
- - gemfiles/rails7_1.gemfile
102
- - gemfiles/rails7_2.gemfile
103
- - gemspecs/arel_extensions-v1.gemspec
104
- - gemspecs/arel_extensions-v2.gemspec
105
- - generate_gems.sh
106
107
  - init/mssql.sql
107
108
  - init/mysql.sql
108
109
  - init/oracle.sql
109
110
  - init/postgresql.sql
110
111
  - init/sqlite.sql
111
112
  - lib/arel_extensions.rb
112
- - lib/arel_extensions/aliases.rb
113
113
  - lib/arel_extensions/attributes.rb
114
114
  - lib/arel_extensions/boolean_functions.rb
115
115
  - lib/arel_extensions/common_sql_functions.rb
116
116
  - lib/arel_extensions/comparators.rb
117
117
  - lib/arel_extensions/date_duration.rb
118
- - lib/arel_extensions/helpers.rb
119
118
  - lib/arel_extensions/insert_manager.rb
120
119
  - lib/arel_extensions/math.rb
121
120
  - lib/arel_extensions/math_functions.rb
122
121
  - lib/arel_extensions/nodes.rb
123
122
  - lib/arel_extensions/nodes/abs.rb
124
- - lib/arel_extensions/nodes/aggregate_function.rb
125
123
  - lib/arel_extensions/nodes/blank.rb
126
124
  - lib/arel_extensions/nodes/case.rb
127
125
  - lib/arel_extensions/nodes/cast.rb
@@ -135,7 +133,6 @@ files:
135
133
  - lib/arel_extensions/nodes/find_in_set.rb
136
134
  - lib/arel_extensions/nodes/floor.rb
137
135
  - lib/arel_extensions/nodes/format.rb
138
- - lib/arel_extensions/nodes/formatted_date.rb
139
136
  - lib/arel_extensions/nodes/formatted_number.rb
140
137
  - lib/arel_extensions/nodes/function.rb
141
138
  - lib/arel_extensions/nodes/is_null.rb
@@ -150,13 +147,10 @@ files:
150
147
  - lib/arel_extensions/nodes/rand.rb
151
148
  - lib/arel_extensions/nodes/repeat.rb
152
149
  - lib/arel_extensions/nodes/replace.rb
153
- - lib/arel_extensions/nodes/rollup.rb
154
150
  - lib/arel_extensions/nodes/round.rb
155
- - lib/arel_extensions/nodes/select.rb
156
151
  - lib/arel_extensions/nodes/soundex.rb
157
152
  - lib/arel_extensions/nodes/std.rb
158
153
  - lib/arel_extensions/nodes/substring.rb
159
- - lib/arel_extensions/nodes/sum.rb
160
154
  - lib/arel_extensions/nodes/then.rb
161
155
  - lib/arel_extensions/nodes/trim.rb
162
156
  - lib/arel_extensions/nodes/union.rb
@@ -170,7 +164,6 @@ files:
170
164
  - lib/arel_extensions/tasks.rb
171
165
  - lib/arel_extensions/version.rb
172
166
  - lib/arel_extensions/visitors.rb
173
- - lib/arel_extensions/visitors/convert_format.rb
174
167
  - lib/arel_extensions/visitors/ibm_db.rb
175
168
  - lib/arel_extensions/visitors/mssql.rb
176
169
  - lib/arel_extensions/visitors/mysql.rb
@@ -179,9 +172,8 @@ files:
179
172
  - lib/arel_extensions/visitors/postgresql.rb
180
173
  - lib/arel_extensions/visitors/sqlite.rb
181
174
  - lib/arel_extensions/visitors/to_sql.rb
182
- - lib/arel_extensions/warning.rb
183
- - test/arelx_test_helper.rb
184
175
  - test/database.yml
176
+ - test/helper.rb
185
177
  - test/real_db_test.rb
186
178
  - test/support/alter_system_user_password.sql
187
179
  - test/support/create_oracle_enhanced_users.sql
@@ -198,13 +190,11 @@ files:
198
190
  - test/with_ar/test_math_sqlite.rb
199
191
  - test/with_ar/test_string_mysql.rb
200
192
  - test/with_ar/test_string_sqlite.rb
201
- - version_v1.rb
202
- - version_v2.rb
203
193
  homepage: https://github.com/Faveod/arel-extensions
204
194
  licenses:
205
195
  - MIT
206
196
  metadata: {}
207
- post_install_message:
197
+ post_install_message:
208
198
  rdoc_options:
209
199
  - "--main"
210
200
  - README.md
@@ -217,12 +207,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
217
207
  version: '0'
218
208
  required_rubygems_version: !ruby/object:Gem::Requirement
219
209
  requirements:
220
- - - ">="
210
+ - - ">"
221
211
  - !ruby/object:Gem::Version
222
- version: '0'
212
+ version: 1.3.1
223
213
  requirements: []
224
- rubygems_version: 3.4.19
225
- signing_key:
214
+ rubygems_version: 3.0.2
215
+ signing_key:
226
216
  specification_version: 4
227
217
  summary: Extending Arel
228
218
  test_files: []
@@ -1,30 +0,0 @@
1
- name: rubygems.org
2
- on:
3
- release:
4
- types: [published]
5
- workflow_dispatch:
6
-
7
- jobs:
8
- publish_gems:
9
- name: Publish to Rubygems
10
- runs-on: ubuntu-latest
11
- steps:
12
- - uses: actions/checkout@v3
13
- - name: setup ruby 3.2
14
- uses: ruby/setup-ruby@v1
15
- with:
16
- ruby-version: 3.2
17
- - name: Fetch Github Release Asset
18
- uses: dsaltares/fetch-gh-release-asset@master
19
- with:
20
- file: "arel_extensions.*.gem"
21
- regex: true
22
- token: ${{ secrets.GITHUB_TOKEN }}
23
- - name: List gems
24
- run: ls -l *.gem
25
- - name: Release Gems
26
- uses: cadwallion/publish-rubygems-action@master
27
- env:
28
- GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
29
- RUBYGEMS_API_KEY: ${{secrets.RUBYGEMS_API_KEY}}
30
- RELEASE_COMMAND: bin/publish
@@ -1,30 +0,0 @@
1
- name: Release
2
- on:
3
- workflow_run:
4
- workflows: ["Build and Test"]
5
- branches: [master]
6
- types:
7
- - completed
8
-
9
- jobs:
10
- build_gems:
11
- name: Build Gemfiles
12
- runs-on: ubuntu-latest
13
- steps:
14
- - uses: actions/checkout@v3
15
- - name: setup ruby 3.2
16
- uses: ruby/setup-ruby@v1
17
- with:
18
- ruby-version: 3.2
19
- - name: build gems
20
- run: |
21
- bin/build
22
- - name: release
23
- uses: softprops/action-gh-release@v1
24
- with:
25
- tag_name: ${{ github.ref }}-${{ steps.vars.outputs.sha_short }}
26
- draft: true
27
- files: |
28
- ./arel_extensions-*.gem
29
- env:
30
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -1,403 +0,0 @@
1
- name: Build and Test
2
-
3
- # Ruby + Rails Compatibility Matrix from here:
4
- # https://www.fastruby.io/blog/ruby/rails/versions/compatibility-table.html
5
- #
6
- # Images are fixed to ubuntu 22.04 because jruby-9.2 is unavailable in
7
- # ubuntu-24.04 (ubuntu-latest when I tested). Also, for rails < 6, sqlite3
8
- # will not build because libsqlite3-dev is missing.
9
-
10
- on:
11
- push:
12
- branches:
13
- - master
14
- pull_request:
15
- branches:
16
- - master
17
-
18
- jobs:
19
- job_test_to_sql:
20
- name: test to_sql
21
- runs-on: ubuntu-22.04
22
- strategy:
23
- fail-fast: false
24
- matrix:
25
- versions:
26
- [
27
- { ruby: "3.3", rails: 7_2, arelx: 2 },
28
- { ruby: "3.3", rails: 7_1, arelx: 2 },
29
- { ruby: "3.3", rails: 7, arelx: 2 },
30
- { ruby: "3.3", rails: 6_1, arelx: 2 },
31
- { ruby: "3.2", rails: 7_2, arelx: 2 },
32
- { ruby: "3.2", rails: 7_1, arelx: 2 },
33
- { ruby: "3.2", rails: 7, arelx: 2 },
34
- { ruby: "3.2", rails: 6, arelx: 2 },
35
- { ruby: "3.2", rails: 6_1, arelx: 2 },
36
- { ruby: "3.1", rails: 7_2, arelx: 2 },
37
- { ruby: "3.1", rails: 7_1, arelx: 2 },
38
- { ruby: "3.1", rails: 7, arelx: 2 },
39
- { ruby: "3.1", rails: 6_1, arelx: 2 },
40
- { ruby: "3.1", rails: 6, arelx: 2 },
41
- { ruby: "3.0", rails: 7_1, arelx: 2 },
42
- { ruby: "3.0", rails: 7, arelx: 2 },
43
- { ruby: "3.0", rails: 6_1, arelx: 2 },
44
- { ruby: "2.7", rails: 7_1, arelx: 2 },
45
- { ruby: "2.7", rails: 7, arelx: 2 },
46
- { ruby: "2.7", rails: 6_1, arelx: 2 },
47
- { ruby: "2.7", rails: 6, arelx: 2 },
48
- { ruby: "2.7", rails: 5_2, arelx: 1 },
49
- { ruby: "2.7", rails: 4_2, arelx: 1 },
50
- { ruby: "2.5", rails: 6_1, arelx: 2 },
51
- { ruby: "2.5", rails: 6, arelx: 2 },
52
- { ruby: "2.5", rails: 5_2, arelx: 1 },
53
- { ruby: "2.5", rails: 4_2, arelx: 1 },
54
- { ruby: jruby-9.2, rails: 6_1, arelx: 2 },
55
- { ruby: jruby-9.2, rails: 6, arelx: 2 },
56
- { ruby: jruby-9.2, rails: 5_2, arelx: 1 },
57
- { ruby: jruby-9.3, rails: 6_1, arelx: 2 },
58
- { ruby: jruby-9.3, rails: 6, arelx: 2 },
59
- { ruby: jruby-9.3, rails: 5_2, arelx: 1 },
60
- ]
61
- steps:
62
- - uses: actions/checkout@v2
63
- - name: Set up Ruby
64
- uses: ruby/setup-ruby@v1
65
- with:
66
- ruby-version: ${{ matrix.versions.ruby }}
67
- - name: Install FreeTDS
68
- run: |
69
- sudo apt-get update -q
70
- sudo apt-get install -y freetds-dev
71
- - name: Setup Gemfile
72
- run: |
73
- cp ./gemspecs/arel_extensions-v${{ matrix.versions.arelx }}.gemspec ./arel_extensions.gemspec
74
- cp ./version_v${{ matrix.versions.arelx }}.rb lib/arel_extensions/version.rb
75
- cp ./gemfiles/rails${{ matrix.versions.rails }}.gemfile ./Gemfile
76
- - name: bundle install
77
- run: |
78
- bundle config set gemfile ./gemfiles/rails${{ matrix.versions.rails }}.gemfile
79
- bundle install
80
- - name: Run test to_sql
81
- run: bundle exec rake test:to_sql
82
-
83
- job_test_sqlite:
84
- name: test sqlite
85
- runs-on: ubuntu-22.04
86
- strategy:
87
- fail-fast: false
88
- matrix:
89
- versions:
90
- [
91
- { ruby: "3.3", rails: 7_2, arelx: 2 },
92
- { ruby: "3.3", rails: 7_1, arelx: 2 },
93
- { ruby: "3.3", rails: 7, arelx: 2 },
94
- { ruby: "3.3", rails: 6_1, arelx: 2 },
95
- { ruby: "3.2", rails: 7_2, arelx: 2 },
96
- { ruby: "3.2", rails: 7_1, arelx: 2 },
97
- { ruby: "3.2", rails: 7, arelx: 2 },
98
- { ruby: "3.2", rails: 6_1, arelx: 2 },
99
- { ruby: "3.2", rails: 6, arelx: 2 },
100
- { ruby: "3.1", rails: 7_2, arelx: 2 },
101
- { ruby: "3.1", rails: 7_1, arelx: 2 },
102
- { ruby: "3.1", rails: 7, arelx: 2 },
103
- { ruby: "3.1", rails: 6, arelx: 2 },
104
- { ruby: "3.1", rails: 6_1, arelx: 2 },
105
- { ruby: "3.0", rails: 7_1, arelx: 2 },
106
- { ruby: "3.0", rails: 7, arelx: 2 },
107
- { ruby: "3.0", rails: 6_1, arelx: 2 },
108
- { ruby: "2.7", rails: 7_1, arelx: 2 },
109
- { ruby: "2.7", rails: 7, arelx: 2 },
110
- { ruby: "2.7", rails: 6_1, arelx: 2 },
111
- { ruby: "2.7", rails: 6, arelx: 2 },
112
- { ruby: "2.7", rails: 5_2, arelx: 1 },
113
- { ruby: "2.7", rails: 4_2, arelx: 1 },
114
- { ruby: "2.5", rails: 6_1, arelx: 2 },
115
- { ruby: "2.5", rails: 6, arelx: 2 },
116
- { ruby: "2.5", rails: 5_2, arelx: 1 },
117
- { ruby: "2.5", rails: 4_2, arelx: 1 },
118
- { ruby: jruby-9.2, rails: 6_1, arelx: 2 },
119
- { ruby: jruby-9.2, rails: 6, arelx: 2 },
120
- { ruby: jruby-9.2, rails: 5_2, arelx: 1 },
121
- { ruby: jruby-9.2, rails: 4_2, arelx: 1 },
122
- { ruby: jruby-9.3, rails: 6_1, arelx: 2 },
123
- { ruby: jruby-9.3, rails: 6, arelx: 2 },
124
- { ruby: jruby-9.3, rails: 5_2, arelx: 1 },
125
- ]
126
- steps:
127
- - uses: actions/checkout@v2
128
- - name: Set up Ruby
129
- uses: ruby/setup-ruby@v1
130
- with:
131
- ruby-version: ${{ matrix.versions.ruby }}
132
- - name: Install FreeTDS
133
- run: |
134
- sudo apt-get update -q
135
- sudo apt-get install -y freetds-dev
136
- - name: Setup Gemfile
137
- run: |
138
- cp ./gemspecs/arel_extensions-v${{ matrix.versions.arelx }}.gemspec ./arel_extensions.gemspec
139
- cp ./version_v${{ matrix.versions.arelx }}.rb lib/arel_extensions/version.rb
140
- cp ./gemfiles/rails${{ matrix.versions.rails }}.gemfile ./Gemfile
141
- - name: bundle install
142
- run: |
143
- bundle config set gemfile ./gemfiles/rails${{ matrix.versions.rails }}.gemfile
144
- bundle install
145
- - name: Run test sqlite
146
- run: bundle exec rake test:sqlite
147
-
148
- job_test_postgres:
149
- name: test postgres
150
- runs-on: ubuntu-22.04
151
- strategy:
152
- fail-fast: false
153
- matrix:
154
- versions: [
155
- { ruby: "3.3", rails: 7_2, arelx: 2 },
156
- { ruby: "3.3", rails: 7_1, arelx: 2 },
157
- { ruby: "3.3", rails: 7, arelx: 2 },
158
- { ruby: "3.3", rails: 6_1, arelx: 2 },
159
- { ruby: "3.2", rails: 7_2, arelx: 2 },
160
- { ruby: "3.2", rails: 7_1, arelx: 2 },
161
- { ruby: "3.2", rails: 7, arelx: 2 },
162
- { ruby: "3.2", rails: 6_1, arelx: 2 },
163
- # { ruby: "3.2", rails: 6, arelx: 2 }, # cannot test > undefined symbol: rb_tainted_str_new2
164
- { ruby: "3.1", rails: 7_2, arelx: 2 },
165
- { ruby: "3.1", rails: 7_1, arelx: 2 },
166
- { ruby: "3.1", rails: 7, arelx: 2 },
167
- { ruby: "3.1", rails: 6_1, arelx: 2 },
168
- { ruby: "3.1", rails: 6, arelx: 2 },
169
- { ruby: "3.0", rails: 7_1, arelx: 2 },
170
- { ruby: "3.0", rails: 7, arelx: 2 },
171
- { ruby: "3.0", rails: 6_1, arelx: 2 },
172
- { ruby: "2.7", rails: 7_1, arelx: 2 },
173
- { ruby: "2.7", rails: 7, arelx: 2 },
174
- { ruby: "2.7", rails: 6_1, arelx: 2 },
175
- { ruby: "2.7", rails: 6, arelx: 2 },
176
- { ruby: "2.7", rails: 5_2, arelx: 1 },
177
- { ruby: "2.7", rails: 4_2, arelx: 1 },
178
- { ruby: "2.5", rails: 6_1, arelx: 2 },
179
- { ruby: "2.5", rails: 6, arelx: 2 },
180
- { ruby: "2.5", rails: 5_2, arelx: 1 },
181
- { ruby: "2.5", rails: 4_2, arelx: 1 },
182
- { ruby: jruby-9.2, rails: 6_1, arelx: 2 },
183
- { ruby: jruby-9.2, rails: 6, arelx: 2 },
184
- { ruby: jruby-9.2, rails: 5_2, arelx: 1 },
185
- { ruby: jruby-9.2, rails: 4_2, arelx: 1 },
186
- { ruby: jruby-9.3, rails: 6_1, arelx: 2 },
187
- { ruby: jruby-9.3, rails: 6, arelx: 2 },
188
- { ruby: jruby-9.3, rails: 5_2, arelx: 1 },
189
- ]
190
- steps:
191
- - uses: actions/checkout@v2
192
- # PostgreSQL requires locales to be installed on the system to be able
193
- # to do time and currency conversions at runtime.
194
- #
195
- # That's why we're not launching it as a service; pre-built images
196
- # lack loaclization.
197
- #
198
- # After we install locales, we'll install PostgreSQL binaries and start
199
- # the service.
200
- - name: setup locale
201
- run: |
202
- sudo locale-gen fr_FR.utf8
203
- sudo update-locale
204
- - name: setup postgres 11
205
- run: |
206
- curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
207
- echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
208
- sudo apt update
209
- sudo apt -y install postgresql-11
210
- sudo systemctl enable postgresql
211
- sudo systemctl start postgresql
212
- sudo su -c "psql -c \"alter user postgres with password 'secret'\"" postgres
213
- sudo su -c "createdb arelx_test" postgres
214
- - name: Set up Ruby
215
- uses: ruby/setup-ruby@v1
216
- with:
217
- ruby-version: ${{ matrix.versions.ruby }}
218
- - name: Install FreeTDS
219
- run: |
220
- sudo apt-get update -q
221
- sudo apt-get install -y freetds-dev
222
- - name: Setup Gemfile
223
- run: |
224
- cp ./gemspecs/arel_extensions-v${{ matrix.versions.arelx }}.gemspec ./arel_extensions.gemspec
225
- cp ./version_v${{ matrix.versions.arelx }}.rb lib/arel_extensions/version.rb
226
- cp ./gemfiles/rails${{ matrix.versions.rails }}.gemfile ./Gemfile
227
- - name: bundle install
228
- run: |
229
- bundle config set gemfile ./gemfiles/rails${{ matrix.versions.rails }}.gemfile
230
- bundle install
231
- - name: Run test Postgres
232
- env:
233
- PGHOST: localhost
234
- PGUSER: postgres
235
- run: bundle exec rake test:postgresql
236
-
237
- job_test_mysql:
238
- name: test mysql
239
- runs-on: ubuntu-22.04
240
- strategy:
241
- fail-fast: false
242
- matrix:
243
- versions: [
244
- { ruby: "3.3", rails: 7_2, arelx: 2 },
245
- { ruby: "3.3", rails: 7_1, arelx: 2 },
246
- { ruby: "3.3", rails: 7, arelx: 2 },
247
- { ruby: "3.3", rails: 6_1, arelx: 2 },
248
- { ruby: "3.2", rails: 7_2, arelx: 2 },
249
- { ruby: "3.2", rails: 7_1, arelx: 2 },
250
- { ruby: "3.2", rails: 7, arelx: 2 },
251
- { ruby: "3.2", rails: 6_1, arelx: 2 },
252
- # { ruby: "3.2", rails: 6, arelx: 2 }, # cannot test > undefined symbol: rb_tainted_str_new2
253
- { ruby: "3.1", rails: 7_2, arelx: 2 },
254
- { ruby: "3.1", rails: 7_1, arelx: 2 },
255
- { ruby: "3.1", rails: 7, arelx: 2 },
256
- { ruby: "3.1", rails: 6_1, arelx: 2 },
257
- { ruby: "3.1", rails: 6, arelx: 2 },
258
- { ruby: "3.0", rails: 7_1, arelx: 2 },
259
- { ruby: "3.0", rails: 7, arelx: 2 },
260
- { ruby: "3.0", rails: 6_1, arelx: 2 },
261
- { ruby: "2.7", rails: 7_1, arelx: 2 },
262
- { ruby: "2.7", rails: 7, arelx: 2 },
263
- { ruby: "2.7", rails: 6_1, arelx: 2 },
264
- { ruby: "2.7", rails: 6, arelx: 2 },
265
- { ruby: "2.7", rails: 5_2, arelx: 1 },
266
- { ruby: "2.7", rails: 4_2, arelx: 1 },
267
- { ruby: "2.5", rails: 6_1, arelx: 2 },
268
- { ruby: "2.5", rails: 6, arelx: 2 },
269
- { ruby: "2.5", rails: 5_2, arelx: 1 },
270
- { ruby: "2.5", rails: 4_2, arelx: 1 },
271
- { ruby: jruby-9.2, rails: 6_1, arelx: 2 },
272
- { ruby: jruby-9.2, rails: 6, arelx: 2 },
273
- { ruby: jruby-9.2, rails: 5_2, arelx: 1 },
274
- { ruby: jruby-9.2, rails: 4_2, arelx: 1 },
275
- { ruby: jruby-9.3, rails: 6_1, arelx: 2 },
276
- { ruby: jruby-9.3, rails: 6, arelx: 2 },
277
- { ruby: jruby-9.3, rails: 5_2, arelx: 1 },
278
- ]
279
- services:
280
- mysql:
281
- image: mysql:5.7
282
- env:
283
- MYSQL_ALLOW_EMPTY_PASSWORD: true
284
- MYSQL_USERNAME: root
285
- MYSQL_DATABASE: arelx_test
286
- ports:
287
- - 3306:3306
288
- options: >-
289
- --health-cmd="mysqladmin ping"
290
- --health-interval=10s
291
- --health-timeout=5s
292
- --health-retries=3
293
- steps:
294
- - uses: actions/checkout@v2
295
- - name: Set up Ruby
296
- uses: ruby/setup-ruby@v1
297
- with:
298
- ruby-version: ${{ matrix.versions.ruby }}
299
- - name: Install FreeTDS
300
- run: |
301
- sudo apt-get update -q
302
- sudo apt-get install -y freetds-dev
303
- - name: Setup Gemfile
304
- run: |
305
- cp ./gemspecs/arel_extensions-v${{ matrix.versions.arelx }}.gemspec ./arel_extensions.gemspec
306
- cp ./version_v${{ matrix.versions.arelx }}.rb lib/arel_extensions/version.rb
307
- cp ./gemfiles/rails${{ matrix.versions.rails }}.gemfile ./Gemfile
308
- - name: bundle install
309
- run: |
310
- bundle config set gemfile ./gemfiles/rails${{ matrix.versions.rails }}.gemfile
311
- bundle install
312
- - name: Run test MySql
313
- env:
314
- DB_CONNECTION: mysql
315
- DB_HOST: 127.0.0.1
316
- DB_PORT: 3306
317
- DB_DATABASE: arelx_test
318
- DB_USERNAME: root
319
- run: bundle exec rake test:mysql
320
-
321
- job_test_mssql:
322
- name: test mssql on linux
323
- runs-on: ubuntu-22.04
324
- strategy:
325
- fail-fast: false
326
- matrix:
327
- versions: [
328
- { ruby: "3.3", rails: 7_1, arelx: 2 },
329
- { ruby: "3.3", rails: 7, arelx: 2 },
330
- { ruby: "3.3", rails: 6_1, arelx: 2 },
331
- { ruby: "3.3", rails: 6, arelx: 2 },
332
- { ruby: "3.2", rails: 7_1, arelx: 2 },
333
- { ruby: "3.2", rails: 7, arelx: 2 },
334
- { ruby: "3.2", rails: 6_1, arelx: 2 },
335
- { ruby: "3.2", rails: 6, arelx: 2 },
336
- { ruby: "3.1", rails: 7_1, arelx: 2 },
337
- { ruby: "3.1", rails: 7, arelx: 2 },
338
- { ruby: "3.1", rails: 6_1, arelx: 2 },
339
- { ruby: "3.1", rails: 6, arelx: 2 },
340
- { ruby: "3.0", rails: 7, arelx: 2 },
341
- { ruby: "3.0", rails: 6_1, arelx: 2 },
342
- { ruby: "3.0", rails: 6, arelx: 2 },
343
- { ruby: "2.7", rails: 6_1, arelx: 2 },
344
- { ruby: "2.7", rails: 6, arelx: 2 },
345
- { ruby: "2.7", rails: 5_2, arelx: 1 },
346
- { ruby: "2.7", rails: 4_2, arelx: 1 },
347
- { ruby: "2.5", rails: 6_1, arelx: 2 },
348
- { ruby: "2.5", rails: 6, arelx: 2 },
349
- { ruby: "2.5", rails: 5_2, arelx: 1 },
350
- { ruby: "2.5", rails: 4_2, arelx: 1 },
351
- # {ruby: jruby-9.2, rails: 6_1, arelx: 2},
352
- # {ruby: jruby-9.2, rails: 6, arelx: 2},
353
- { ruby: jruby-9.2, rails: 5_2, arelx: 1 },
354
- { ruby: jruby-9.2, rails: 4_2, arelx: 1 },
355
- # See comments on 9.4 to understand why these are disabled for now.
356
- # {ruby: jruby-9.3, rails: 6_1, arelx: 2},
357
- # {ruby: jruby-9.3, rails: 6, arelx: 2},
358
- # {ruby: jruby-9.3, rails: 5_2, arelx: 1},
359
- { ruby: jruby-9.4.10, rails: 7_1, arelx: 2 }, # The reason we pin to the patch level is https://github.com/ruby/psych/issues/700
360
- { ruby: jruby-9.4.10, rails: 7, arelx: 2 },
361
- #
362
- # 6 and 6.1 don't work because of a bug in the alt adapter
363
- # https://github.com/JesseChavez/activerecord-jdbc-adapter/issues/16
364
- # {ruby: jruby-9.4, rails: 6_1, arelx: 2},
365
- # {ruby: jruby-9.4, rails: 6, arelx: 2},
366
- #
367
- # < 5.2 don't work because of a deeper issue.
368
- # {ruby: jruby-9.4, rails: 5_2, arelx: 1},
369
- ]
370
- mssql: [2017, 2019]
371
- steps:
372
- - uses: actions/checkout@v2
373
- - name: Set up Ruby
374
- uses: ruby/setup-ruby@v1
375
- with:
376
- ruby-version: ${{ matrix.versions.ruby }}
377
- - name: Install FreeTDS
378
- run: |
379
- sudo apt-get update -q
380
- sudo apt-get install -y freetds-dev
381
- - name: Install MSSQL ${{ matrix.mssql }}
382
- uses: potatoqualitee/mssqlsuite@v1.5.1
383
- with:
384
- version: ${{ matrix.mssql }}
385
- install: sqlengine, sqlclient, sqlpackage, localdb
386
- sa-password: Password12!
387
- - name: Setup Gemfile
388
- run: |
389
- cp ./gemspecs/arel_extensions-v${{ matrix.versions.arelx }}.gemspec ./arel_extensions.gemspec
390
- cp ./version_v${{ matrix.versions.arelx }}.rb lib/arel_extensions/version.rb
391
- cp ./gemfiles/rails${{ matrix.versions.rails }}.gemfile ./Gemfile
392
- - name: bundle install
393
- run: |
394
- bundle config set gemfile ./gemfiles/rails${{ matrix.versions.rails }}.gemfile
395
- bundle install
396
- - name: Run test mssql [mri]
397
- if: ${{ !contains(matrix.versions.ruby, 'jruby') }}
398
- run: bundle exec rake test:mssql
399
- - name: Run test mssql [jruby]
400
- if: ${{ contains(matrix.versions.ruby, 'jruby') }}
401
- run: |
402
- curl -LO https://github.com/microsoft/mssql-jdbc/releases/download/v8.4.1/mssql-jdbc-8.4.1.jre11.jar
403
- CLASSPATH=".:mssql-jdbc-8.4.1.jre11.jar" bundle exec rake test:mssql