arel_extensions 2.1.5 → 2.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +156 -153
- data/NEWS.md +32 -0
- data/README.md +151 -83
- data/appveyor.yml +9 -0
- data/arel_extensions.gemspec +0 -1
- data/gemfiles/{rails4.gemfile → rails4_2.gemfile} +12 -3
- data/gemfiles/{rails5_0.gemfile → rails5.gemfile} +0 -0
- data/gemfiles/rails6_1.gemfile +1 -1
- data/gemfiles/rails7.gemfile +1 -1
- data/gemspecs/arel_extensions-v1.gemspec +0 -1
- data/gemspecs/arel_extensions-v2.gemspec +0 -1
- data/lib/arel_extensions/date_duration.rb +5 -0
- data/lib/arel_extensions/nodes/case.rb +4 -3
- data/lib/arel_extensions/nodes/formatted_date.rb +42 -0
- data/lib/arel_extensions/nodes/rollup.rb +36 -0
- data/lib/arel_extensions/nodes/select.rb +10 -0
- data/lib/arel_extensions/null_functions.rb +16 -0
- data/lib/arel_extensions/string_functions.rb +1 -0
- data/lib/arel_extensions/version.rb +1 -1
- data/lib/arel_extensions/visitors/mssql.rb +97 -0
- data/lib/arel_extensions/visitors/mysql.rb +89 -21
- data/lib/arel_extensions/visitors/oracle.rb +21 -0
- data/lib/arel_extensions/visitors/postgresql.rb +4 -0
- data/lib/arel_extensions/visitors/to_sql.rb +20 -0
- data/lib/arel_extensions/visitors.rb +8 -0
- data/lib/arel_extensions.rb +16 -0
- data/test/with_ar/all_agnostic_test.rb +249 -129
- data/version_v1.rb +1 -1
- data/version_v2.rb +1 -1
- metadata +9 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f586ca440095febfcae38a3b2d2b911069751db2cb4817f08edecb4561edc829
|
4
|
+
data.tar.gz: 8dca7e2bbbf5e14ebb54176cf1a73419765f1d4a0f2d2bf70593b9a4ee5d063d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7adc670c444b2bd553420c42f6cc8d5df2fed537fe252d99dd20dbb8603b89727472804b72842da5166670f0eb91b29918bd592de439c2d728f5586b229f54c1
|
7
|
+
data.tar.gz: 0bb2be5b50e1ed8afce7f17541305ab72206ae01ad15a07859c41f4b4e77683e8e42f7868673cb6e8abf53b9384e88af75fdc0f8d01ba9730b4973e67e73826c
|
data/.github/workflows/ruby.yml
CHANGED
@@ -6,159 +6,147 @@ name: Build and Test
|
|
6
6
|
on: [push, pull_request]
|
7
7
|
|
8
8
|
jobs:
|
9
|
-
job_build_gem:
|
10
|
-
name: build
|
11
|
-
runs-on: ubuntu-latest
|
12
|
-
strategy:
|
13
|
-
matrix:
|
14
|
-
ruby: [3.1, 3.0, 2.7, 2.5, jruby-9.2, jruby-9.3]
|
15
|
-
rails: [7, 6_1, 6, 5_2]
|
16
|
-
exclude: [
|
17
|
-
{ruby: 3.1, rails: 6 },
|
18
|
-
{ruby: 3.1, rails: 5_2},
|
19
|
-
{ruby: 3.0, rails: 6 },
|
20
|
-
{ruby: 3.0, rails: 5_2},
|
21
|
-
{ruby: 2.7, rails: 5_2},
|
22
|
-
{ruby: 2.5, rails: 7 },
|
23
|
-
{ruby: jruby-9.2, rails: 7 },
|
24
|
-
{ruby: jruby-9.3, rails: 7 },
|
25
|
-
]
|
26
|
-
steps:
|
27
|
-
- uses: actions/checkout@v2
|
28
|
-
- name: Set up Ruby
|
29
|
-
uses: ruby/setup-ruby@v1
|
30
|
-
with:
|
31
|
-
ruby-version: ${{ matrix.ruby }}
|
32
|
-
- name: Setup gemspec
|
33
|
-
if: ${{ matrix.rails != '5_2' }}
|
34
|
-
run: |
|
35
|
-
cp ./gemspecs/arel_extensions-v2.gemspec ./arel_extensions.gemspec
|
36
|
-
cp ./version_v2.rb lib/arel_extensions/version.rb
|
37
|
-
cp ./gemfiles/rails${{ matrix.rails }}.gemfile ./Gemfile
|
38
|
-
- name: Build source gem
|
39
|
-
run: gem build arel_extensions.gemspec
|
40
|
-
- name: Upload source gem
|
41
|
-
uses: actions/upload-artifact@v2
|
42
|
-
with:
|
43
|
-
name: ${{ matrix.ruby }}-${{ matrix.rails }}-gem
|
44
|
-
path: "*.gem"
|
45
|
-
|
46
9
|
job_test_to_sql:
|
47
10
|
name: test to_sql
|
48
|
-
needs: job_build_gem
|
49
11
|
runs-on: ubuntu-latest
|
50
12
|
strategy:
|
51
13
|
fail-fast: false
|
52
14
|
matrix:
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
{ruby: 3.1,
|
57
|
-
{ruby: 3.1,
|
58
|
-
{ruby: 3.0,
|
59
|
-
{ruby: 3.0,
|
60
|
-
{ruby: 2.7,
|
61
|
-
{ruby: 2.
|
62
|
-
{ruby:
|
63
|
-
{ruby:
|
15
|
+
versions: [
|
16
|
+
{ruby: '3.2', rails: 7, arelx: 2},
|
17
|
+
{ruby: '3.2', rails: 6_1, arelx: 2},
|
18
|
+
{ruby: '3.1', rails: 7, arelx: 2},
|
19
|
+
{ruby: '3.1', rails: 6_1, arelx: 2},
|
20
|
+
{ruby: '3.0', rails: 7, arelx: 2},
|
21
|
+
{ruby: '3.0', rails: 6_1, arelx: 2},
|
22
|
+
{ruby: '2.7', rails: 7, arelx: 2},
|
23
|
+
{ruby: '2.7', rails: 6_1, arelx: 2},
|
24
|
+
{ruby: '2.7', rails: 6, arelx: 2},
|
25
|
+
{ruby: '2.7', rails: 5_2, arelx: 1},
|
26
|
+
{ruby: '2.7', rails: 4_2, arelx: 1},
|
27
|
+
{ruby: '2.5', rails: 6_1, arelx: 2},
|
28
|
+
{ruby: '2.5', rails: 6, arelx: 2},
|
29
|
+
{ruby: '2.5', rails: 5_2, arelx: 1},
|
30
|
+
{ruby: '2.5', rails: 4_2, arelx: 1},
|
31
|
+
{ruby: jruby-9.2, rails: 6_1, arelx: 2},
|
32
|
+
{ruby: jruby-9.2, rails: 6, arelx: 2},
|
33
|
+
{ruby: jruby-9.2, rails: 5_2, arelx: 1},
|
34
|
+
{ruby: jruby-9.3, rails: 6_1, arelx: 2},
|
35
|
+
{ruby: jruby-9.3, rails: 6, arelx: 2},
|
36
|
+
{ruby: jruby-9.3, rails: 5_2, arelx: 1},
|
64
37
|
]
|
65
38
|
steps:
|
66
39
|
- uses: actions/checkout@v2
|
67
40
|
- name: Set up Ruby
|
68
41
|
uses: ruby/setup-ruby@v1
|
69
42
|
with:
|
70
|
-
ruby-version: ${{ matrix.ruby }}
|
43
|
+
ruby-version: ${{ matrix.versions.ruby }}
|
71
44
|
- name: Install FreeTDS
|
72
45
|
run: |
|
73
46
|
sudo apt-get update -q
|
74
47
|
sudo apt-get install -y freetds-dev
|
75
48
|
- name: Update system-wide gems
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
name: ${{ matrix.ruby }}-${{ matrix.rails }}-gem
|
81
|
-
- name: Setup Gemfile
|
82
|
-
if: ${{ matrix.rails != '5_2' }}
|
49
|
+
if: ${{ !contains(fromJson('["2.5", "jruby-9.2"]'), matrix.versions.ruby) }}
|
50
|
+
run: gem update --system --no-document
|
51
|
+
- name: Setup Gemfile for arelx 2.x
|
52
|
+
if: ${{ matrix.versions.arelx == 2 }}
|
83
53
|
run: |
|
84
54
|
cp ./gemspecs/arel_extensions-v2.gemspec ./arel_extensions.gemspec
|
85
55
|
cp ./version_v2.rb lib/arel_extensions/version.rb
|
86
|
-
cp ./gemfiles/rails${{ matrix.rails }}.gemfile ./Gemfile
|
56
|
+
cp ./gemfiles/rails${{ matrix.versions.rails }}.gemfile ./Gemfile
|
87
57
|
- name: bundle install
|
88
58
|
run: |
|
89
|
-
bundle config set gemfile ./gemfiles/rails${{ matrix.rails }}.gemfile
|
59
|
+
bundle config set gemfile ./gemfiles/rails${{ matrix.versions.rails }}.gemfile
|
90
60
|
bundle install
|
91
61
|
- name: Run test to_sql
|
92
62
|
run: bundle exec rake test:to_sql
|
93
63
|
|
94
64
|
job_test_sqlite:
|
95
65
|
name: test sqlite
|
96
|
-
needs: job_build_gem
|
97
66
|
runs-on: ubuntu-latest
|
98
67
|
strategy:
|
99
68
|
fail-fast: false
|
100
69
|
matrix:
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
{ruby: 3.1,
|
105
|
-
{ruby: 3.1,
|
106
|
-
{ruby: 3.0,
|
107
|
-
{ruby: 3.0,
|
108
|
-
{ruby: 2.7,
|
109
|
-
{ruby: 2.
|
110
|
-
{ruby:
|
111
|
-
{ruby:
|
70
|
+
versions: [
|
71
|
+
{ruby: '3.2', rails: 7, arelx: 2},
|
72
|
+
{ruby: '3.2', rails: 6_1, arelx: 2},
|
73
|
+
{ruby: '3.1', rails: 7, arelx: 2},
|
74
|
+
{ruby: '3.1', rails: 6_1, arelx: 2},
|
75
|
+
{ruby: '3.0', rails: 7, arelx: 2},
|
76
|
+
{ruby: '3.0', rails: 6_1, arelx: 2},
|
77
|
+
{ruby: '2.7', rails: 7, arelx: 2},
|
78
|
+
{ruby: '2.7', rails: 6_1, arelx: 2},
|
79
|
+
{ruby: '2.7', rails: 6, arelx: 2},
|
80
|
+
{ruby: '2.7', rails: 5_2, arelx: 1},
|
81
|
+
{ruby: '2.7', rails: 4_2, arelx: 1},
|
82
|
+
{ruby: '2.5', rails: 6_1, arelx: 2},
|
83
|
+
{ruby: '2.5', rails: 6, arelx: 2},
|
84
|
+
{ruby: '2.5', rails: 5_2, arelx: 1},
|
85
|
+
{ruby: '2.5', rails: 4_2, arelx: 1},
|
86
|
+
{ruby: jruby-9.2, rails: 6_1, arelx: 2},
|
87
|
+
{ruby: jruby-9.2, rails: 6, arelx: 2},
|
88
|
+
{ruby: jruby-9.2, rails: 5_2, arelx: 1},
|
89
|
+
{ruby: jruby-9.2, rails: 4_2, arelx: 1},
|
90
|
+
{ruby: jruby-9.3, rails: 6_1, arelx: 2},
|
91
|
+
{ruby: jruby-9.3, rails: 6, arelx: 2},
|
92
|
+
{ruby: jruby-9.3, rails: 5_2, arelx: 1},
|
112
93
|
]
|
113
94
|
steps:
|
114
95
|
- uses: actions/checkout@v2
|
115
96
|
- name: Set up Ruby
|
116
97
|
uses: ruby/setup-ruby@v1
|
117
98
|
with:
|
118
|
-
ruby-version: ${{ matrix.ruby }}
|
99
|
+
ruby-version: ${{ matrix.versions.ruby }}
|
119
100
|
- name: Install FreeTDS
|
120
101
|
run: |
|
121
102
|
sudo apt-get update -q
|
122
103
|
sudo apt-get install -y freetds-dev
|
123
104
|
- name: Update system-wide gems
|
124
|
-
|
125
|
-
|
126
|
-
uses: actions/download-artifact@v2
|
127
|
-
with:
|
128
|
-
name: ${{ matrix.ruby }}-${{ matrix.rails }}-gem
|
105
|
+
if: ${{ !contains(fromJson('["2.5", "jruby-9.2"]'), matrix.versions.ruby) }}
|
106
|
+
run: gem update --system --no-document
|
129
107
|
- name: Setup Gemfile
|
130
|
-
if: ${{ matrix.
|
108
|
+
if: ${{ matrix.versions.arelx == 2 }}
|
131
109
|
run: |
|
132
110
|
cp ./gemspecs/arel_extensions-v2.gemspec ./arel_extensions.gemspec
|
133
111
|
cp ./version_v2.rb lib/arel_extensions/version.rb
|
134
|
-
cp ./gemfiles/rails${{ matrix.rails }}.gemfile ./Gemfile
|
112
|
+
cp ./gemfiles/rails${{ matrix.versions.rails }}.gemfile ./Gemfile
|
135
113
|
- name: bundle install
|
136
114
|
run: |
|
137
|
-
bundle config set gemfile ./gemfiles/rails${{ matrix.rails }}.gemfile
|
115
|
+
bundle config set gemfile ./gemfiles/rails${{ matrix.versions.rails }}.gemfile
|
138
116
|
bundle install
|
139
117
|
- name: Run test sqlite
|
140
118
|
run: bundle exec rake test:sqlite
|
141
119
|
|
142
120
|
job_test_postgres:
|
143
121
|
name: test postgres
|
144
|
-
needs: job_build_gem
|
145
122
|
runs-on: ubuntu-latest
|
146
123
|
strategy:
|
147
124
|
fail-fast: false
|
148
125
|
matrix:
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
126
|
+
versions: [
|
127
|
+
{ruby: '3.2', rails: 7, arelx: 2},
|
128
|
+
{ruby: '3.2', rails: 6_1, arelx: 2},
|
129
|
+
{ruby: '3.1', rails: 7, arelx: 2},
|
130
|
+
{ruby: '3.1', rails: 6_1, arelx: 2},
|
131
|
+
{ruby: '3.0', rails: 7, arelx: 2},
|
132
|
+
{ruby: '3.0', rails: 6_1, arelx: 2},
|
133
|
+
{ruby: '2.7', rails: 7, arelx: 2},
|
134
|
+
{ruby: '2.7', rails: 6_1, arelx: 2},
|
135
|
+
{ruby: '2.7', rails: 6, arelx: 2},
|
136
|
+
{ruby: '2.7', rails: 5_2, arelx: 1},
|
137
|
+
{ruby: '2.7', rails: 4_2, arelx: 1},
|
138
|
+
{ruby: '2.5', rails: 6_1, arelx: 2},
|
139
|
+
{ruby: '2.5', rails: 6, arelx: 2},
|
140
|
+
{ruby: '2.5', rails: 5_2, arelx: 1},
|
141
|
+
{ruby: '2.5', rails: 4_2, arelx: 1},
|
142
|
+
{ruby: jruby-9.2, rails: 6_1, arelx: 2},
|
143
|
+
{ruby: jruby-9.2, rails: 6, arelx: 2},
|
144
|
+
{ruby: jruby-9.2, rails: 5_2, arelx: 1},
|
145
|
+
{ruby: jruby-9.2, rails: 4_2, arelx: 1},
|
146
|
+
{ruby: jruby-9.3, rails: 6_1, arelx: 2},
|
147
|
+
{ruby: jruby-9.3, rails: 6, arelx: 2},
|
148
|
+
{ruby: jruby-9.3, rails: 5_2, arelx: 1},
|
149
|
+
]
|
162
150
|
steps:
|
163
151
|
- uses: actions/checkout@v2
|
164
152
|
# PostgreSQL requires locales to be installed on the system to be able
|
@@ -186,26 +174,23 @@ jobs:
|
|
186
174
|
- name: Set up Ruby
|
187
175
|
uses: ruby/setup-ruby@v1
|
188
176
|
with:
|
189
|
-
ruby-version: ${{ matrix.ruby }}
|
177
|
+
ruby-version: ${{ matrix.versions.ruby }}
|
190
178
|
- name: Install FreeTDS
|
191
179
|
run: |
|
192
180
|
sudo apt-get update -q
|
193
181
|
sudo apt-get install -y freetds-dev
|
194
182
|
- name: Update system-wide gems
|
195
|
-
|
196
|
-
|
197
|
-
uses: actions/download-artifact@v2
|
198
|
-
with:
|
199
|
-
name: ${{ matrix.ruby }}-${{ matrix.rails }}-gem
|
183
|
+
if: ${{ !contains(fromJson('["2.5", "jruby-9.2"]'), matrix.versions.ruby) }}
|
184
|
+
run: gem update --system --no-document
|
200
185
|
- name: Setup Gemfile
|
201
|
-
if: ${{ matrix.
|
186
|
+
if: ${{ matrix.versions.arelx == 2 }}
|
202
187
|
run: |
|
203
188
|
cp ./gemspecs/arel_extensions-v2.gemspec ./arel_extensions.gemspec
|
204
189
|
cp ./version_v2.rb lib/arel_extensions/version.rb
|
205
|
-
cp ./gemfiles/rails${{ matrix.rails }}.gemfile ./Gemfile
|
190
|
+
cp ./gemfiles/rails${{ matrix.versions.rails }}.gemfile ./Gemfile
|
206
191
|
- name: bundle install
|
207
192
|
run: |
|
208
|
-
bundle config set gemfile ./gemfiles/rails${{ matrix.rails }}.gemfile
|
193
|
+
bundle config set gemfile ./gemfiles/rails${{ matrix.versions.rails }}.gemfile
|
209
194
|
bundle install
|
210
195
|
- name: Run test Postgres
|
211
196
|
env:
|
@@ -215,22 +200,33 @@ jobs:
|
|
215
200
|
|
216
201
|
job_test_mysql:
|
217
202
|
name: test mysql
|
218
|
-
needs: job_build_gem
|
219
203
|
runs-on: ubuntu-latest
|
220
204
|
strategy:
|
221
205
|
fail-fast: false
|
222
206
|
matrix:
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
{ruby: 3.1,
|
227
|
-
{ruby: 3.1,
|
228
|
-
{ruby: 3.0,
|
229
|
-
{ruby: 3.0,
|
230
|
-
{ruby: 2.7,
|
231
|
-
{ruby: 2.
|
232
|
-
{ruby:
|
233
|
-
{ruby:
|
207
|
+
versions: [
|
208
|
+
{ruby: '3.2', rails: 7, arelx: 2},
|
209
|
+
{ruby: '3.2', rails: 6_1, arelx: 2},
|
210
|
+
{ruby: '3.1', rails: 7, arelx: 2},
|
211
|
+
{ruby: '3.1', rails: 6_1, arelx: 2},
|
212
|
+
{ruby: '3.0', rails: 7, arelx: 2},
|
213
|
+
{ruby: '3.0', rails: 6_1, arelx: 2},
|
214
|
+
{ruby: '2.7', rails: 7, arelx: 2},
|
215
|
+
{ruby: '2.7', rails: 6_1, arelx: 2},
|
216
|
+
{ruby: '2.7', rails: 6, arelx: 2},
|
217
|
+
{ruby: '2.7', rails: 5_2, arelx: 1},
|
218
|
+
{ruby: '2.7', rails: 4_2, arelx: 1},
|
219
|
+
{ruby: '2.5', rails: 6_1, arelx: 2},
|
220
|
+
{ruby: '2.5', rails: 6, arelx: 2},
|
221
|
+
{ruby: '2.5', rails: 5_2, arelx: 1},
|
222
|
+
{ruby: '2.5', rails: 4_2, arelx: 1},
|
223
|
+
{ruby: jruby-9.2, rails: 6_1, arelx: 2},
|
224
|
+
{ruby: jruby-9.2, rails: 6, arelx: 2},
|
225
|
+
{ruby: jruby-9.2, rails: 5_2, arelx: 1},
|
226
|
+
{ruby: jruby-9.2, rails: 4_2, arelx: 1},
|
227
|
+
{ruby: jruby-9.3, rails: 6_1, arelx: 2},
|
228
|
+
{ruby: jruby-9.3, rails: 6, arelx: 2},
|
229
|
+
{ruby: jruby-9.3, rails: 5_2, arelx: 1},
|
234
230
|
]
|
235
231
|
services:
|
236
232
|
mysql:
|
@@ -251,26 +247,23 @@ jobs:
|
|
251
247
|
- name: Set up Ruby
|
252
248
|
uses: ruby/setup-ruby@v1
|
253
249
|
with:
|
254
|
-
ruby-version: ${{ matrix.ruby }}
|
250
|
+
ruby-version: ${{ matrix.versions.ruby }}
|
255
251
|
- name: Install FreeTDS
|
256
252
|
run: |
|
257
253
|
sudo apt-get update -q
|
258
254
|
sudo apt-get install -y freetds-dev
|
259
255
|
- name: Update system-wide gems
|
260
|
-
|
261
|
-
|
262
|
-
uses: actions/download-artifact@v2
|
263
|
-
with:
|
264
|
-
name: ${{ matrix.ruby }}-${{ matrix.rails }}-gem
|
256
|
+
if: ${{ !contains(fromJson('["2.5", "jruby-9.2"]'), matrix.versions.ruby) }}
|
257
|
+
run: gem update --system --no-document
|
265
258
|
- name: Setup Gemfile
|
266
|
-
if: ${{ matrix.
|
259
|
+
if: ${{ matrix.versions.arelx == 2 }}
|
267
260
|
run: |
|
268
261
|
cp ./gemspecs/arel_extensions-v2.gemspec ./arel_extensions.gemspec
|
269
262
|
cp ./version_v2.rb lib/arel_extensions/version.rb
|
270
|
-
cp ./gemfiles/rails${{ matrix.rails }}.gemfile ./Gemfile
|
263
|
+
cp ./gemfiles/rails${{ matrix.versions.rails }}.gemfile ./Gemfile
|
271
264
|
- name: bundle install
|
272
265
|
run: |
|
273
|
-
bundle config set gemfile ./gemfiles/rails${{ matrix.rails }}.gemfile
|
266
|
+
bundle config set gemfile ./gemfiles/rails${{ matrix.versions.rails }}.gemfile
|
274
267
|
bundle install
|
275
268
|
- name: Run test MySql
|
276
269
|
env:
|
@@ -283,59 +276,69 @@ jobs:
|
|
283
276
|
|
284
277
|
job_test_mssql:
|
285
278
|
name: test mssql on linux
|
286
|
-
needs: job_build_gem
|
287
279
|
runs-on: ubuntu-latest
|
288
280
|
strategy:
|
289
281
|
fail-fast: false
|
290
282
|
matrix:
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
{ruby: 3.1, rails:
|
296
|
-
{ruby: 3.
|
297
|
-
{ruby: 3.0, rails:
|
298
|
-
{ruby:
|
299
|
-
{ruby: 2.7, rails:
|
300
|
-
|
301
|
-
|
302
|
-
{ruby:
|
303
|
-
{ruby:
|
304
|
-
|
305
|
-
{ruby:
|
306
|
-
{ruby:
|
283
|
+
versions: [
|
284
|
+
# {ruby: '3.2', rails: 7, arelx: 2},
|
285
|
+
{ruby: '3.2', rails: 6_1, arelx: 2},
|
286
|
+
# {ruby: '3.1', rails: 7, arelx: 2},
|
287
|
+
{ruby: '3.1', rails: 6_1, arelx: 2},
|
288
|
+
# {ruby: '3.0', rails: 7, arelx: 2},
|
289
|
+
{ruby: '3.0', rails: 6_1, arelx: 2},
|
290
|
+
# {ruby: '2.7', rails: 7, arelx: 2},
|
291
|
+
{ruby: '2.7', rails: 6_1, arelx: 2},
|
292
|
+
{ruby: '2.7', rails: 6, arelx: 2},
|
293
|
+
{ruby: '2.7', rails: 5_2, arelx: 1},
|
294
|
+
{ruby: '2.7', rails: 4_2, arelx: 1},
|
295
|
+
{ruby: '2.5', rails: 6_1, arelx: 2},
|
296
|
+
{ruby: '2.5', rails: 6, arelx: 2},
|
297
|
+
{ruby: '2.5', rails: 5_2, arelx: 1},
|
298
|
+
{ruby: '2.5', rails: 4_2, arelx: 1},
|
299
|
+
# {ruby: jruby-9.2, rails: 6_1, arelx: 2},
|
300
|
+
# {ruby: jruby-9.2, rails: 6, arelx: 2},
|
301
|
+
{ruby: jruby-9.2, rails: 5_2, arelx: 1},
|
302
|
+
{ruby: jruby-9.2, rails: 4_2, arelx: 1},
|
303
|
+
# {ruby: jruby-9.3, rails: 6_1, arelx: 2},
|
304
|
+
# {ruby: jruby-9.3, rails: 6, arelx: 2},
|
305
|
+
{ruby: jruby-9.3, rails: 5_2, arelx: 1},
|
307
306
|
]
|
307
|
+
mssql: [2017, 2019]
|
308
308
|
steps:
|
309
309
|
- uses: actions/checkout@v2
|
310
310
|
- name: Set up Ruby
|
311
311
|
uses: ruby/setup-ruby@v1
|
312
312
|
with:
|
313
|
-
ruby-version: ${{ matrix.ruby }}
|
313
|
+
ruby-version: ${{ matrix.versions.ruby }}
|
314
314
|
- name: Install FreeTDS
|
315
315
|
run: |
|
316
316
|
sudo apt-get update -q
|
317
317
|
sudo apt-get install -y freetds-dev
|
318
|
-
- name: Install MSSQL ${{ matrix.
|
318
|
+
- name: Install MSSQL ${{ matrix.mssql }}
|
319
319
|
uses: potatoqualitee/mssqlsuite@v1.5.1
|
320
320
|
with:
|
321
|
-
version: ${{ matrix.
|
321
|
+
version: ${{ matrix.mssql }}
|
322
322
|
install: sqlengine, sqlclient, sqlpackage, localdb
|
323
323
|
sa-password: Password12!
|
324
324
|
- name: Update system-wide gems
|
325
|
-
|
326
|
-
|
327
|
-
uses: actions/download-artifact@v2
|
328
|
-
with:
|
329
|
-
name: ${{ matrix.ruby }}-${{ matrix.rails }}-gem
|
325
|
+
if: ${{ !contains(fromJson('["2.5", "jruby-9.2"]'), matrix.versions.ruby) }}
|
326
|
+
run: gem update --system --no-document
|
330
327
|
- name: Setup Gemfile
|
331
|
-
if: ${{ matrix.
|
328
|
+
if: ${{ matrix.versions.arelx == 2 }}
|
332
329
|
run: |
|
333
330
|
cp ./gemspecs/arel_extensions-v2.gemspec ./arel_extensions.gemspec
|
334
331
|
cp ./version_v2.rb lib/arel_extensions/version.rb
|
335
|
-
cp ./gemfiles/rails${{ matrix.rails }}.gemfile ./Gemfile
|
332
|
+
cp ./gemfiles/rails${{ matrix.versions.rails }}.gemfile ./Gemfile
|
336
333
|
- name: bundle install
|
337
334
|
run: |
|
338
|
-
bundle config set gemfile ./gemfiles/rails${{ matrix.rails }}.gemfile
|
335
|
+
bundle config set gemfile ./gemfiles/rails${{ matrix.versions.rails }}.gemfile
|
339
336
|
bundle install
|
340
|
-
- name: Run test mssql
|
337
|
+
- name: Run test mssql [mri]
|
338
|
+
if: ${{ !contains(matrix.versions.ruby, 'jruby') }}
|
341
339
|
run: bundle exec rake test:mssql
|
340
|
+
- name: Run test mssql [jruby]
|
341
|
+
if: ${{ contains(matrix.versions.ruby, 'jruby') }}
|
342
|
+
run: |
|
343
|
+
curl -LO https://github.com/microsoft/mssql-jdbc/releases/download/v8.4.1/mssql-jdbc-8.4.1.jre11.jar
|
344
|
+
CLASSPATH=".:mssql-jdbc-8.4.1.jre11.jar" bundle exec rake test:mssql
|
data/NEWS.md
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# News
|
2
|
+
|
3
|
+
## Current Release
|
4
|
+
|
5
|
+
### New Features
|
6
|
+
|
7
|
+
- `o.format_date` as an alternative to `o.format`
|
8
|
+
The actual behavior of `format` is inconsistent across DB vendors: in mysql we
|
9
|
+
can format dates and numbers with it, and in the other ones we only format
|
10
|
+
dates.
|
11
|
+
|
12
|
+
We're planning on normalizing this behavior. We want `format` to "cleverly"
|
13
|
+
format dates or numbers, and `format_date` / `format_number` to strictly
|
14
|
+
format dates / numbers.
|
15
|
+
|
16
|
+
The introduction of `format_date` is the first step in this direction.
|
17
|
+
|
18
|
+
## Release v2.1.6/v1.3.6
|
19
|
+
|
20
|
+
### Bug Fixes
|
21
|
+
|
22
|
+
- This used to fail.
|
23
|
+
```
|
24
|
+
Arel.when(a).then(b).format('%Y-%m-%d')
|
25
|
+
```
|
26
|
+
|
27
|
+
### New Features
|
28
|
+
|
29
|
+
- `o.present`, a synonym for `o.not_blank`
|
30
|
+
- `o.coalesce_blank(a, b, c)`
|
31
|
+
- `o.if_present`, if the value is `null` or blank, then it returns `null`,
|
32
|
+
otherwise, it returns the value. Inspired by rails' `presence`.
|