arel_extensions 2.1.4 → 2.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +162 -222
- data/.gitignore +7 -6
- data/.rubocop.yml +37 -0
- data/Gemfile +3 -3
- data/NEWS.md +15 -0
- data/README.md +119 -75
- data/appveyor.yml +82 -0
- data/arel_extensions.gemspec +0 -1
- data/gemfiles/rails3.gemfile +5 -5
- data/gemfiles/rails4_2.gemfile +38 -0
- data/gemfiles/{rails5_0.gemfile → rails5.gemfile} +6 -6
- data/gemfiles/rails5_1_4.gemfile +6 -6
- data/gemfiles/rails5_2.gemfile +6 -5
- data/gemfiles/rails6.gemfile +5 -4
- data/gemfiles/rails6_1.gemfile +5 -4
- data/gemfiles/rails7.gemfile +5 -4
- data/gemspecs/arel_extensions-v1.gemspec +0 -1
- data/gemspecs/arel_extensions-v2.gemspec +0 -1
- data/lib/arel_extensions/common_sql_functions.rb +2 -2
- data/lib/arel_extensions/helpers.rb +12 -12
- data/lib/arel_extensions/math.rb +32 -17
- data/lib/arel_extensions/nodes/case.rb +4 -3
- data/lib/arel_extensions/nodes/cast.rb +2 -2
- data/lib/arel_extensions/nodes/coalesce.rb +1 -1
- data/lib/arel_extensions/nodes/collate.rb +1 -1
- data/lib/arel_extensions/nodes/date_diff.rb +6 -6
- data/lib/arel_extensions/nodes/locate.rb +1 -1
- data/lib/arel_extensions/nodes/repeat.rb +2 -2
- data/lib/arel_extensions/nodes/rollup.rb +36 -0
- data/lib/arel_extensions/nodes/select.rb +10 -0
- data/lib/arel_extensions/nodes/substring.rb +1 -1
- data/lib/arel_extensions/nodes/then.rb +1 -1
- data/lib/arel_extensions/nodes/trim.rb +2 -2
- data/lib/arel_extensions/nodes/union.rb +3 -3
- data/lib/arel_extensions/nodes/union_all.rb +2 -2
- 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/ibm_db.rb +1 -1
- data/lib/arel_extensions/visitors/mssql.rb +123 -17
- data/lib/arel_extensions/visitors/mysql.rb +78 -11
- data/lib/arel_extensions/visitors/oracle.rb +39 -17
- data/lib/arel_extensions/visitors/postgresql.rb +17 -12
- data/lib/arel_extensions/visitors/sqlite.rb +4 -4
- data/lib/arel_extensions/visitors/to_sql.rb +4 -1
- data/lib/arel_extensions/visitors.rb +8 -0
- data/lib/arel_extensions.rb +26 -0
- data/test/arelx_test_helper.rb +1 -1
- data/test/real_db_test.rb +5 -5
- data/test/support/fake_record.rb +1 -1
- data/test/visitors/test_bulk_insert_oracle.rb +3 -3
- data/test/visitors/test_bulk_insert_sqlite.rb +1 -1
- data/test/visitors/test_bulk_insert_to_sql.rb +1 -1
- data/test/visitors/test_to_sql.rb +6 -6
- data/test/with_ar/all_agnostic_test.rb +177 -70
- data/test/with_ar/insert_agnostic_test.rb +3 -3
- data/test/with_ar/test_bulk_sqlite.rb +1 -1
- data/version_v1.rb +1 -1
- data/version_v2.rb +1 -1
- metadata +8 -18
- data/gemfiles/rails4.gemfile +0 -29
data/README.md
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# Arel Extensions
|
2
2
|
|
3
3
|

|
4
|
-
[](https://ci.appveyor.com/project/jdelporte/arel-extensions)
|
5
5
|

|
6
6
|
|
7
7
|
Gem: [](https://rubygems.org/gems/arel_extensions)
|
8
8
|
[](https://rubygems.org/gems/arel_extensions)
|
9
9
|
[](https://rubygems.org/gems/arel_extensions)
|
10
10
|
|
11
|
-
Arel Extensions adds shortcuts, fixes and new ORM mappings (
|
12
|
-
It aims to ensure pure
|
11
|
+
Arel Extensions adds shortcuts, fixes and new ORM mappings (Ruby to SQL) to Arel.
|
12
|
+
It aims to ensure pure Ruby syntax for most usual cases.
|
13
13
|
It allows to use more advanced SQL functions for any supported RDBMS.
|
14
14
|
|
15
15
|
|
@@ -292,6 +292,15 @@ User.connection.execute(insert_manager.to_sql)
|
|
292
292
|
<td class="ok">✔</td>
|
293
293
|
<td class="ok">✔</td>
|
294
294
|
</tr>
|
295
|
+
<tr>
|
296
|
+
<td class="tg-yw4l">POSIX FORMATTING<br>column.format_number("$ %7.2f","en_US")</td>
|
297
|
+
<td class="ok">✔</td>
|
298
|
+
<td class="ok">✔</td>
|
299
|
+
<td class="ok">✔</td>
|
300
|
+
<td class="ok">✔</td>
|
301
|
+
<td class="ok">✔</td>
|
302
|
+
<td class="ko">not implemented</td>
|
303
|
+
</tr>
|
295
304
|
<tr>
|
296
305
|
<td class="tg-yw4l">RAND<br>Arel.rand</td>
|
297
306
|
<td class="ok">✔</td>
|
@@ -320,24 +329,33 @@ User.connection.execute(insert_manager.to_sql)
|
|
320
329
|
<td class="ok">✔</td>
|
321
330
|
</tr>
|
322
331
|
<tr>
|
323
|
-
<
|
324
|
-
<td class="
|
332
|
+
<th class="tg-ffjm" rowspan="17"><div>String functions</div></th>
|
333
|
+
<td class="tg-yw4l">CONCAT<br>column + "string"</td>
|
325
334
|
<td class="ok">✔</td>
|
326
335
|
<td class="ok">✔</td>
|
336
|
+
<td class="tg-j6lv"> ||</td>
|
327
337
|
<td class="ok">✔</td>
|
338
|
+
<td class="tg-j6lv">+</td>
|
328
339
|
<td class="ok">✔</td>
|
329
|
-
<td class="ko">not implemented</td>
|
330
340
|
</tr>
|
331
341
|
<tr>
|
332
|
-
<
|
333
|
-
<td class="tg-yw4l">CONCAT<br>column + "string"</td>
|
342
|
+
<td class="tg-yw4l">FIND_IN_SET<br>column & ("l")</td>
|
334
343
|
<td class="ok">✔</td>
|
335
344
|
<td class="ok">✔</td>
|
336
|
-
<td class="tg-
|
345
|
+
<td class="tg-orpl">Ruby function</td>
|
346
|
+
<td class="ok">✔</td>
|
337
347
|
<td class="ok">✔</td>
|
338
|
-
<td class="tg-j6lv">+</td>
|
339
348
|
<td class="ok">✔</td>
|
340
349
|
</tr>
|
350
|
+
<tr>
|
351
|
+
<td class="tg-yw4l">ILIKE (in Arel6)<br/>column.imatches('%pattern')</td>
|
352
|
+
<td class="tg-j6lv">LOWER() LIKE LOWER()</td>
|
353
|
+
<td class="ok">✔</td>
|
354
|
+
<td class="ok">✔</td>
|
355
|
+
<td class="tg-j6lv">LOWER() LIKE LOWER()</td>
|
356
|
+
<td class="tg-j6lv">LOWER() LIKE LOWER()</td>
|
357
|
+
<td class="tg-j6lv">LOWER() LIKE LOWER()</td>
|
358
|
+
</tr>
|
341
359
|
<tr>
|
342
360
|
<td class="tg-yw4l">LENGTH<br>column.length</td>
|
343
361
|
<td class="ok">✔</td>
|
@@ -357,30 +375,57 @@ User.connection.execute(insert_manager.to_sql)
|
|
357
375
|
<td class="ok">✔</td>
|
358
376
|
</tr>
|
359
377
|
<tr>
|
360
|
-
<td class="tg-yw4l">
|
361
|
-
<td class="ok">✔</td>
|
362
|
-
<td class="tg-j6lv">SUBSTR()</td>
|
363
|
-
<td class="tg-j6lv">SUBSTR()</td>
|
364
|
-
<td class="tg-j6lv">SUBSTR()</td>
|
378
|
+
<td class="tg-yw4l">Matching Accent/Case Insensitive<br>column.ai_imatches('blah')</td>
|
365
379
|
<td class="ok">✔</td>
|
380
|
+
<td class="tg-j6lv">unaccent required</td>
|
381
|
+
<td class="tg-j6lv">not supported</td>
|
366
382
|
<td class="ok">✔</td>
|
383
|
+
<td class="tg-j6lv">✔</td>
|
384
|
+
<td class="tg-j6lv">?</td>
|
367
385
|
</tr>
|
368
386
|
<tr>
|
369
|
-
<td class="tg-yw4l">
|
370
|
-
<td class="ok"
|
371
|
-
<td class="
|
372
|
-
<td class="tg-
|
387
|
+
<td class="tg-yw4l">Matching Accent Insensitive<br>column.ai_matches('blah')</td>
|
388
|
+
<td class="ok">not supported</td>
|
389
|
+
<td class="tg-j6lv">not supported</td>
|
390
|
+
<td class="tg-j6lv">not supported</td>
|
391
|
+
<td class="ok">not supported</td>
|
392
|
+
<td class="tg-j6lv">✔</td>
|
393
|
+
<td class="tg-j6lv">?</td>
|
394
|
+
</tr>
|
395
|
+
<tr>
|
396
|
+
<td class="tg-yw4l">Matching Case Insensitive<br>column.imatches('blah')</td>
|
397
|
+
<td class="ok">not supported</td>
|
398
|
+
<td class="tg-j6lv">✔</td>
|
399
|
+
<td class="tg-j6lv">✔</td>
|
373
400
|
<td class="ok">✔</td>
|
401
|
+
<td class="tg-j6lv">✔</td>
|
402
|
+
<td class="tg-j6lv">?</td>
|
403
|
+
</tr>
|
404
|
+
<tr>
|
405
|
+
<td class="tg-yw4l">Matching Accent/Case Sensitive<br>column.smatches('blah')</td>
|
374
406
|
<td class="ok">✔</td>
|
407
|
+
<td class="tg-j6lv">✔</td>
|
408
|
+
<td class="tg-j6lv">not supported</td>
|
375
409
|
<td class="ok">✔</td>
|
410
|
+
<td class="tg-j6lv">✔</td>
|
411
|
+
<td class="tg-j6lv">?</td>
|
376
412
|
</tr>
|
377
413
|
<tr>
|
378
|
-
<td class="tg-yw4l">
|
414
|
+
<td class="tg-yw4l">NOT_REGEXP<br>column != "pattern"</td>
|
379
415
|
<td class="ok">✔</td>
|
380
|
-
<td class="
|
416
|
+
<td class="ok">✔<br></td>
|
417
|
+
<td class="tg-3oug">require pcre.so</td>
|
418
|
+
<td class="tg-j6lv">NOT REGEXP_LIKE </td>
|
419
|
+
<td class="tg-j6lv">NOT LIKE</td>
|
381
420
|
<td class="ok">✔</td>
|
421
|
+
</tr>
|
422
|
+
<tr>
|
423
|
+
<td class="tg-yw4l">REGEXP<br>column =~ "pattern"<br></td>
|
382
424
|
<td class="ok">✔</td>
|
383
425
|
<td class="ok">✔</td>
|
426
|
+
<td class="tg-3oug">require pcre.so</td>
|
427
|
+
<td class="tg-j6lv">REGEXP_LIKE</td>
|
428
|
+
<td class="tg-j6lv">LIKE</td>
|
384
429
|
<td class="ok">✔</td>
|
385
430
|
</tr>
|
386
431
|
<tr>
|
@@ -393,31 +438,22 @@ User.connection.execute(insert_manager.to_sql)
|
|
393
438
|
<td class="ok">✔</td>
|
394
439
|
</tr>
|
395
440
|
<tr>
|
396
|
-
<td class="tg-yw4l">
|
441
|
+
<td class="tg-yw4l">SOUNDEX<br>column.soundex</td>
|
397
442
|
<td class="ok">✔</td>
|
443
|
+
<td class="tg-3oug">require fuzzystrmatch</td>
|
398
444
|
<td class="ok">✔</td>
|
399
|
-
<td class="tg-3oug">require pcre.so</td>
|
400
|
-
<td class="tg-j6lv">REGEXP_LIKE</td>
|
401
|
-
<td class="tg-j6lv">LIKE</td>
|
402
445
|
<td class="ok">✔</td>
|
403
|
-
</tr>
|
404
|
-
<tr>
|
405
|
-
<td class="tg-yw4l">NOT_REGEXP<br>column != "pattern"</td>
|
406
446
|
<td class="ok">✔</td>
|
407
|
-
<td class="ok">✔<br></td>
|
408
|
-
<td class="tg-3oug">require pcre.so</td>
|
409
|
-
<td class="tg-j6lv">NOT REGEXP_LIKE </td>
|
410
|
-
<td class="tg-j6lv">NOT LIKE</td>
|
411
447
|
<td class="ok">✔</td>
|
412
448
|
</tr>
|
413
449
|
<tr>
|
414
|
-
<td class="tg-yw4l">
|
415
|
-
<td class="
|
450
|
+
<td class="tg-yw4l">SUBSTRING<br/>column[1..2]<br/>column.substring(1)<br/>column.substring(1, 1)</td>
|
451
|
+
<td class="ok">✔</td>
|
452
|
+
<td class="tg-j6lv">SUBSTR()</td>
|
453
|
+
<td class="tg-j6lv">SUBSTR()</td>
|
454
|
+
<td class="tg-j6lv">SUBSTR()</td>
|
416
455
|
<td class="ok">✔</td>
|
417
456
|
<td class="ok">✔</td>
|
418
|
-
<td class="tg-j6lv">LOWER() LIKE LOWER()</td>
|
419
|
-
<td class="tg-j6lv">LOWER() LIKE LOWER()</td>
|
420
|
-
<td class="tg-j6lv">LOWER() LIKE LOWER()</td>
|
421
457
|
</tr>
|
422
458
|
<tr>
|
423
459
|
<td class="tg-yw4l">TRIM (leading)<br>column.trim("LEADING","M")</td>
|
@@ -446,43 +482,6 @@ User.connection.execute(insert_manager.to_sql)
|
|
446
482
|
<td class="tg-j6lv">LTRIM(RTRIM())</td>
|
447
483
|
<td class="tg-j6lv">TRIM()</td>
|
448
484
|
</tr>
|
449
|
-
<tr>
|
450
|
-
<td class="tg-yw4l">Matching Accent/Case Insensitive<br>column.ai_imatches('blah')</td>
|
451
|
-
<td class="ok">✔</td>
|
452
|
-
<td class="tg-j6lv">unaccent required</td>
|
453
|
-
<td class="tg-j6lv">not supported</td>
|
454
|
-
<td class="ok">✔</td>
|
455
|
-
<td class="tg-j6lv">✔</td>
|
456
|
-
<td class="tg-j6lv">?</td>
|
457
|
-
</tr>
|
458
|
-
<tr>
|
459
|
-
<td class="tg-yw4l">Matching Accent Insensitive<br>column.ai_matches('blah')</td>
|
460
|
-
<td class="ok">not supported</td>
|
461
|
-
<td class="tg-j6lv">not supported</td>
|
462
|
-
<td class="tg-j6lv">not supported</td>
|
463
|
-
<td class="ok">not supported</td>
|
464
|
-
<td class="tg-j6lv">✔</td>
|
465
|
-
<td class="tg-j6lv">?</td>
|
466
|
-
</tr>
|
467
|
-
<tr>
|
468
|
-
<td class="tg-yw4l">Matching Case Insensitive<br>column.imatches('blah')</td>
|
469
|
-
<td class="ok">not supported</td>
|
470
|
-
<td class="tg-j6lv">✔</td>
|
471
|
-
<td class="tg-j6lv">✔</td>
|
472
|
-
<td class="ok">✔</td>
|
473
|
-
<td class="tg-j6lv">✔</td>
|
474
|
-
<td class="tg-j6lv">?</td>
|
475
|
-
</tr>
|
476
|
-
<tr>
|
477
|
-
<td class="tg-yw4l">Matching Accent/Case Sensitive<br>column.smatches('blah')</td>
|
478
|
-
<td class="ok">✔</td>
|
479
|
-
<td class="tg-j6lv">✔</td>
|
480
|
-
<td class="tg-j6lv">not supported</td>
|
481
|
-
<td class="ok">✔</td>
|
482
|
-
<td class="tg-j6lv">✔</td>
|
483
|
-
<td class="tg-j6lv">?</td>
|
484
|
-
</tr>
|
485
|
-
|
486
485
|
<tr>
|
487
486
|
<th class="tg-4rp9" rowspan="6"><div>Date functions</div></th>
|
488
487
|
<td class="tg-yw4l">DATEADD<br>column + 2.year<br></td>
|
@@ -539,7 +538,16 @@ User.connection.execute(insert_manager.to_sql)
|
|
539
538
|
<td class="ok">✔</td>
|
540
539
|
</tr>
|
541
540
|
<tr>
|
542
|
-
<th class="tg-72dn" rowspan="
|
541
|
+
<th class="tg-72dn" rowspan="13"><div>Comparators functions</div></th>
|
542
|
+
<td class="tg-yw4l">BLANK<br>column.blank<br></td>
|
543
|
+
<td class="ok">✔</td>
|
544
|
+
<td class="ok">✔</td>
|
545
|
+
<td class="ok">✔</td>
|
546
|
+
<td class="ok">✔</td>
|
547
|
+
<td class="ok">✔</td>
|
548
|
+
<td class="ok">✔</td>
|
549
|
+
</tr>
|
550
|
+
<tr>
|
543
551
|
<td class="tg-yw4l">COALESCE<br>column.coalesce(var)</td>
|
544
552
|
<td class="ok">✔</td>
|
545
553
|
<td class="ok">✔</td>
|
@@ -548,6 +556,24 @@ User.connection.execute(insert_manager.to_sql)
|
|
548
556
|
<td class="ok">✔</td>
|
549
557
|
<td class="ok">✔</td>
|
550
558
|
</tr>
|
559
|
+
<tr>
|
560
|
+
<td class="tg-yw4l">COALESCE_BLANK<br>column.coalesce_blank(var)</td>
|
561
|
+
<td class="ok">✔</td>
|
562
|
+
<td class="ok">✔</td>
|
563
|
+
<td class="ok">✔</td>
|
564
|
+
<td class="ok">✔</td>
|
565
|
+
<td class="ok">✔</td>
|
566
|
+
<td class="ok">✔</td>
|
567
|
+
</tr>
|
568
|
+
<tr>
|
569
|
+
<td class="tg-yw4l">IF_PRESENT</td>
|
570
|
+
<td class="ok">✔</td>
|
571
|
+
<td class="ok">✔</td>
|
572
|
+
<td class="ok">✔</td>
|
573
|
+
<td class="ok">✔</td>
|
574
|
+
<td class="ok">✔</td>
|
575
|
+
<td class="ok">✔</td>
|
576
|
+
</tr>
|
551
577
|
<tr>
|
552
578
|
<td class="tg-yw4l">ISNULL<br>column.isnull()</td>
|
553
579
|
<td class="tg-j6lv">IFNULL()</td>
|
@@ -557,6 +583,24 @@ User.connection.execute(insert_manager.to_sql)
|
|
557
583
|
<td class="ok">✔</td>
|
558
584
|
<td class="ok">✔</td>
|
559
585
|
</tr>
|
586
|
+
<tr>
|
587
|
+
<td class="tg-yw4l">NOT_BLANK<br>column.not_blank<br></td>
|
588
|
+
<td class="ok">✔</td>
|
589
|
+
<td class="ok">✔</td>
|
590
|
+
<td class="ok">✔</td>
|
591
|
+
<td class="ok">✔</td>
|
592
|
+
<td class="ok">✔</td>
|
593
|
+
<td class="ok">✔</td>
|
594
|
+
</tr>
|
595
|
+
<tr>
|
596
|
+
<td class="tg-yw4l">PRESENT<br>column.present<br>alias to NOT_BLANK<br></td>
|
597
|
+
<td class="ok">✔</td>
|
598
|
+
<td class="ok">✔</td>
|
599
|
+
<td class="ok">✔</td>
|
600
|
+
<td class="ok">✔</td>
|
601
|
+
<td class="ok">✔</td>
|
602
|
+
<td class="ok">✔</td>
|
603
|
+
</tr>
|
560
604
|
<tr>
|
561
605
|
<td class="tg-yw4l">==<br>column == integer</td>
|
562
606
|
<td class="ok">✔</td>
|
data/appveyor.yml
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
image: Visual Studio 2015
|
2
|
+
|
3
|
+
version: "{build}"
|
4
|
+
|
5
|
+
cache:
|
6
|
+
- vendor/bundle
|
7
|
+
|
8
|
+
environment:
|
9
|
+
matrix:
|
10
|
+
- RUBY_VERSION: 25-x64
|
11
|
+
RAILS: 4_2
|
12
|
+
SQL: MSSQL$SQL2012SP1
|
13
|
+
- RUBY_VERSION: 25-x64
|
14
|
+
RAILS: 4_2
|
15
|
+
SQL: MSSQL$SQL2014
|
16
|
+
- RUBY_VERSION: 25-x64
|
17
|
+
RAILS: 4_2
|
18
|
+
SQL: MSSQL$SQL2016
|
19
|
+
- RUBY_VERSION: 25-x64
|
20
|
+
RAILS: 5_2
|
21
|
+
SQL: MSSQL$SQL2012SP1
|
22
|
+
- RUBY_VERSION: 25-x64
|
23
|
+
RAILS: 5_2
|
24
|
+
SQL: MSSQL$SQL2014
|
25
|
+
- RUBY_VERSION: 25-x64
|
26
|
+
RAILS: 5_2
|
27
|
+
SQL: MSSQL$SQL2016
|
28
|
+
- RUBY_VERSION: 25-x64
|
29
|
+
RAILS: 6
|
30
|
+
SQL: MSSQL$SQL2012SP1
|
31
|
+
- RUBY_VERSION: 25-x64
|
32
|
+
RAILS: 6
|
33
|
+
SQL: MSSQL$SQL2014
|
34
|
+
- RUBY_VERSION: 25-x64
|
35
|
+
RAILS: 6
|
36
|
+
SQL: MSSQL$SQL2016
|
37
|
+
- RUBY_VERSION: 25-x64
|
38
|
+
RAILS: 6_1
|
39
|
+
SQL: MSSQL$SQL2012SP1
|
40
|
+
- RUBY_VERSION: 25-x64
|
41
|
+
RAILS: 6_1
|
42
|
+
SQL: MSSQL$SQL2014
|
43
|
+
- RUBY_VERSION: 25-x64
|
44
|
+
RAILS: 6_1
|
45
|
+
SQL: MSSQL$SQL2016
|
46
|
+
|
47
|
+
install:
|
48
|
+
- set PATH=C:\Ruby%RUBY_VERSION%\bin;%PATH%
|
49
|
+
- gem update --system
|
50
|
+
- gem install rubygems-update && update_rubygems
|
51
|
+
- bundle config --local path vendor/bundle
|
52
|
+
- cp ./gemfiles/rails%RAILS%.gemfile ./Gemfile
|
53
|
+
- bundle config set gemfile ./gemfiles/rails%RAILS%.gemfile
|
54
|
+
- bundle install
|
55
|
+
|
56
|
+
build: off
|
57
|
+
|
58
|
+
before_test:
|
59
|
+
- ruby -v
|
60
|
+
- gem -v
|
61
|
+
- bundle -v
|
62
|
+
|
63
|
+
test_script:
|
64
|
+
- ps: Get-Service '*SQL*'
|
65
|
+
- net start %SQL%
|
66
|
+
- bundle exec rake test:mssql
|
67
|
+
|
68
|
+
for:
|
69
|
+
-
|
70
|
+
matrix:
|
71
|
+
except:
|
72
|
+
- RAILS: 5_2
|
73
|
+
install:
|
74
|
+
- set PATH=C:\Ruby%RUBY_VERSION%\bin;%PATH%
|
75
|
+
- cp ./gemspecs/arel_extensions-v2.gemspec ./arel_extensions.gemspec
|
76
|
+
- cp ./version_v2.rb lib/arel_extensions/version.rb
|
77
|
+
- cp ./gemfiles/rails%RAILS%.gemfile ./Gemfile
|
78
|
+
- gem update --system
|
79
|
+
- gem install rubygems-update && update_rubygems
|
80
|
+
- bundle config --local path vendor/bundle
|
81
|
+
- bundle config set gemfile ./gemfiles/rails%RAILS%.gemfile
|
82
|
+
- bundle install
|
data/arel_extensions.gemspec
CHANGED
data/gemfiles/rails3.gemfile
CHANGED
@@ -3,10 +3,10 @@ source 'https://rubygems.org'
|
|
3
3
|
gem 'arel', '~> 3.0' # too old...
|
4
4
|
|
5
5
|
group :development, :test do
|
6
|
-
gem 'sqlite3', '<= 1.3.13', platform: [
|
7
|
-
gem 'mysql2', '0.4.10', platform: [
|
8
|
-
gem 'activerecord-mysql2-adapter', platform: [
|
9
|
-
gem 'pg', platform: [
|
6
|
+
gem 'sqlite3', '<= 1.3.13', platform: %i[ruby mswin mingw]
|
7
|
+
gem 'mysql2', '0.4.10', platform: %i[ruby mswin mingw]
|
8
|
+
gem 'activerecord-mysql2-adapter', platform: %i[ruby mswin mingw]
|
9
|
+
gem 'pg', platform: %i[ruby mswin mingw]
|
10
10
|
# for JRuby
|
11
11
|
gem 'jdbc-sqlite3', platform: :jruby
|
12
12
|
gem 'activerecord-jdbcsqlite3-adapter', platform: :jruby
|
@@ -17,4 +17,4 @@ group :development, :test do
|
|
17
17
|
gem 'activerecord', '~> 3.2'
|
18
18
|
end
|
19
19
|
|
20
|
-
gemspec path:
|
20
|
+
gemspec path: Dir.pwd
|
@@ -0,0 +1,38 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gem 'arel', '~> 6.0'
|
4
|
+
|
5
|
+
group :development, :test do
|
6
|
+
# We need to explicitly include bigdecimal for ruby 2.7 .
|
7
|
+
# See https://github.com/ruby/bigdecimal for details.
|
8
|
+
rb_version = Gem::Version.new(RUBY_VERSION)
|
9
|
+
if Gem::Version.new('2.7') <= rb_version && rb_version < Gem::Version.new('2.8')
|
10
|
+
gem 'bigdecimal', '~> 1.3.5', platforms: %i[mri mingw x64_mingw mswin]
|
11
|
+
end
|
12
|
+
|
13
|
+
gem 'activesupport', '~> 4.0'
|
14
|
+
gem 'activemodel', '~> 4.0'
|
15
|
+
gem 'activerecord', '~> 4.0'
|
16
|
+
|
17
|
+
gem 'sqlite3', '<= 1.3.13', platforms: %i[mri mswin mingw]
|
18
|
+
gem 'mysql2', '0.4.10', platforms: %i[mri mswin mingw]
|
19
|
+
gem 'pg', '< 1.0.0', platforms: %i[mri mingw]
|
20
|
+
|
21
|
+
gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
|
22
|
+
gem 'activerecord-sqlserver-adapter', '~> 4.2.0', platforms: %i[mri mingw x64_mingw mswin]
|
23
|
+
|
24
|
+
gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
|
25
|
+
gem 'activerecord-oracle_enhanced-adapter', '~> 1.6.0' if ENV.has_key? 'ORACLE_HOME'
|
26
|
+
|
27
|
+
# for JRuby
|
28
|
+
gem 'activerecord-jdbc-adapter', '~> 1.3', platforms: :jruby
|
29
|
+
gem 'jdbc-sqlite3', '~> 3.28', platforms: :jruby
|
30
|
+
gem 'jdbc-postgres', '~> 42.2', platforms: :jruby
|
31
|
+
gem 'jdbc-mysql', '~> 5.1', platforms: :jruby
|
32
|
+
gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
|
33
|
+
gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
|
34
|
+
gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
|
35
|
+
gem 'activerecord-jdbcmssql-adapter', platforms: :jruby
|
36
|
+
end
|
37
|
+
|
38
|
+
gemspec path: Dir.pwd
|
@@ -7,14 +7,14 @@ group :development, :test do
|
|
7
7
|
gem 'activemodel', '~> 5.0'
|
8
8
|
gem 'activerecord', '5.0.6'
|
9
9
|
|
10
|
-
gem 'sqlite3', '<= 1.3.13', platforms: [
|
11
|
-
gem 'mysql2', '0.4.10', platforms: [
|
12
|
-
gem 'pg', '< 1.0.0', platforms: [
|
10
|
+
gem 'sqlite3', '<= 1.3.13', platforms: %i[mri mswin mingw]
|
11
|
+
gem 'mysql2', '0.4.10', platforms: %i[mri mswin mingw]
|
12
|
+
gem 'pg', '< 1.0.0', platforms: %i[mri mingw]
|
13
13
|
|
14
|
-
gem 'tiny_tds', platforms: [
|
14
|
+
gem 'tiny_tds', platforms: %i[mri mingw] if RUBY_PLATFORM.match?(/windows/)
|
15
15
|
# gem "activerecord-sqlserver-adapter", platforms: [:mri, :mingw]
|
16
16
|
|
17
|
-
gem 'ruby-oci8', platforms: [
|
17
|
+
gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
|
18
18
|
gem 'activerecord-oracle_enhanced-adapter', '~> 1.7' if ENV.has_key? 'ORACLE_HOME'
|
19
19
|
|
20
20
|
# for JRuby
|
@@ -26,4 +26,4 @@ group :development, :test do
|
|
26
26
|
gem 'activerecord-jdbcmssql-adapter', platforms: :jruby
|
27
27
|
end
|
28
28
|
|
29
|
-
gemspec path:
|
29
|
+
gemspec path: Dir.pwd
|
data/gemfiles/rails5_1_4.gemfile
CHANGED
@@ -8,14 +8,14 @@ group :development, :test do
|
|
8
8
|
gem 'activemodel', '5.1.4'
|
9
9
|
gem 'activerecord', '5.1.4'
|
10
10
|
|
11
|
-
gem 'sqlite3', '<= 1.3.13', platforms: [
|
12
|
-
gem 'mysql2', '0.4.10', platforms: [
|
13
|
-
gem 'pg', '< 1.0.0', platforms: [
|
11
|
+
gem 'sqlite3', '<= 1.3.13', platforms: %i[mri mswin mingw]
|
12
|
+
gem 'mysql2', '0.4.10', platforms: %i[mri mswin mingw]
|
13
|
+
gem 'pg', '< 1.0.0', platforms: %i[mri mingw]
|
14
14
|
|
15
|
-
gem 'tiny_tds', platforms: [
|
15
|
+
gem 'tiny_tds', platforms: %i[mri mingw] if RUBY_PLATFORM.match?(/windows/)
|
16
16
|
# gem "activerecord-sqlserver-adapter", platforms: [:mri, :mingw]
|
17
17
|
|
18
|
-
gem 'ruby-oci8', platforms: [
|
18
|
+
gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
|
19
19
|
gem 'activerecord-oracle_enhanced-adapter', '~> 1.8' if ENV.has_key? 'ORACLE_HOME'
|
20
20
|
|
21
21
|
# for JRuby
|
@@ -27,4 +27,4 @@ group :development, :test do
|
|
27
27
|
gem 'activerecord-jdbcmssql-adapter', platforms: :jruby
|
28
28
|
end
|
29
29
|
|
30
|
-
gemspec path:
|
30
|
+
gemspec path: Dir.pwd
|
data/gemfiles/rails5_2.gemfile
CHANGED
@@ -4,7 +4,7 @@ gem 'rails', '~> 5.2.0'
|
|
4
4
|
gem 'arel', '~> 9'
|
5
5
|
|
6
6
|
group :development, :test do
|
7
|
-
gem 'bigdecimal', '1.3.5', platforms: [
|
7
|
+
gem 'bigdecimal', '1.3.5', platforms: %i[mri mingw x64_mingw mswin]
|
8
8
|
gem 'activesupport', '~> 5.2.0'
|
9
9
|
gem 'activemodel', '~> 5.2.0'
|
10
10
|
gem 'activerecord', '~> 5.2.0'
|
@@ -13,10 +13,11 @@ group :development, :test do
|
|
13
13
|
gem 'mysql2', '0.4.10', platforms: [:mri]
|
14
14
|
gem 'pg', '< 1.0.0', platforms: [:mri]
|
15
15
|
|
16
|
-
gem 'tiny_tds', platforms: [
|
17
|
-
gem 'activerecord-sqlserver-adapter', '~> 5.2', platforms: [
|
16
|
+
gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
|
17
|
+
gem 'activerecord-sqlserver-adapter', '~> 5.2', platforms: %i[mri mingw x64_mingw mswin]
|
18
|
+
gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
|
18
19
|
|
19
|
-
gem 'ruby-oci8', platforms: [
|
20
|
+
gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
|
20
21
|
gem 'activerecord-oracle_enhanced-adapter', '~> 5.2.0' if ENV.has_key? 'ORACLE_HOME'
|
21
22
|
|
22
23
|
# for JRuby
|
@@ -28,4 +29,4 @@ group :development, :test do
|
|
28
29
|
gem 'activerecord-jdbcsqlserver-adapter', '~> 52.0', platforms: :jruby
|
29
30
|
end
|
30
31
|
|
31
|
-
gemspec path:
|
32
|
+
gemspec path: Dir.pwd
|
data/gemfiles/rails6.gemfile
CHANGED
@@ -12,10 +12,11 @@ group :development, :test do
|
|
12
12
|
gem 'mysql2', '0.5.2', platforms: [:mri]
|
13
13
|
gem 'pg', '< 1.0.0', platforms: [:mri]
|
14
14
|
|
15
|
-
gem 'tiny_tds', platforms: [
|
16
|
-
gem 'activerecord-sqlserver-adapter', '~> 6.0', platforms: [
|
15
|
+
gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
|
16
|
+
gem 'activerecord-sqlserver-adapter', '~> 6.0', platforms: %i[mri mingw x64_mingw mswin]
|
17
|
+
gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
|
17
18
|
|
18
|
-
gem 'ruby-oci8', platforms: [
|
19
|
+
gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
|
19
20
|
gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.has_key? 'ORACLE_HOME'
|
20
21
|
|
21
22
|
# for JRuby
|
@@ -26,4 +27,4 @@ group :development, :test do
|
|
26
27
|
gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
|
27
28
|
end
|
28
29
|
|
29
|
-
gemspec path:
|
30
|
+
gemspec path: Dir.pwd
|
data/gemfiles/rails6_1.gemfile
CHANGED
@@ -12,10 +12,11 @@ group :development, :test do
|
|
12
12
|
gem 'mysql2', '0.5.2', platforms: [:mri]
|
13
13
|
gem 'pg', '~> 1.1', platforms: [:mri]
|
14
14
|
|
15
|
-
gem 'tiny_tds', platforms: [
|
16
|
-
gem 'activerecord-sqlserver-adapter', '~> 6.1.0', platforms: [
|
15
|
+
gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
|
16
|
+
gem 'activerecord-sqlserver-adapter', '~> 6.1.0', platforms: %i[mri mingw x64_mingw mswin]
|
17
|
+
gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
|
17
18
|
|
18
|
-
gem 'ruby-oci8', platforms: [
|
19
|
+
gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
|
19
20
|
gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.has_key? 'ORACLE_HOME'
|
20
21
|
|
21
22
|
# for JRuby
|
@@ -26,4 +27,4 @@ group :development, :test do
|
|
26
27
|
gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
|
27
28
|
end
|
28
29
|
|
29
|
-
gemspec path:
|
30
|
+
gemspec path: Dir.pwd
|
data/gemfiles/rails7.gemfile
CHANGED
@@ -12,11 +12,12 @@ group :development, :test do
|
|
12
12
|
gem 'mysql2', '0.5.2', platforms: [:mri]
|
13
13
|
gem 'pg', '~> 1.1', platforms: [:mri]
|
14
14
|
|
15
|
-
gem 'tiny_tds', platforms: [
|
16
|
-
gem 'activerecord-sqlserver-adapter', '~> 7.0.0.0', platforms: [
|
15
|
+
gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
|
16
|
+
gem 'activerecord-sqlserver-adapter', '~> 7.0.0.0', platforms: %i[mri mingw x64_mingw mswin]
|
17
|
+
gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
|
17
18
|
|
18
|
-
gem 'ruby-oci8', platforms: [
|
19
|
+
gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
|
19
20
|
gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.has_key? 'ORACLE_HOME'
|
20
21
|
end
|
21
22
|
|
22
|
-
gemspec path:
|
23
|
+
gemspec path: Dir.pwd
|
@@ -38,8 +38,8 @@ module ArelExtensions
|
|
38
38
|
|
39
39
|
def add_sql_functions(env_db = nil)
|
40
40
|
env_db ||= @cnx.adapter_name
|
41
|
-
env_db = 'mysql' if
|
42
|
-
if
|
41
|
+
env_db = 'mysql' if /mysql/i.match?(env_db)
|
42
|
+
if /sqlite/i.match?(env_db)
|
43
43
|
begin
|
44
44
|
add_sqlite_functions
|
45
45
|
rescue => e
|