arel_extensions 2.4.0 → 2.5.0

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 (83) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/.rubocop.yml +131 -5
  4. data/Makefile +31 -1
  5. data/NEWS.md +15 -0
  6. data/README.md +11 -2
  7. data/Rakefile +5 -3
  8. data/arel_extensions.gemspec +3 -5
  9. data/gemfiles/rails5.gemfile +15 -8
  10. data/gemfiles/rails5_1_4.gemfile +11 -9
  11. data/gemfiles/rails5_2.gemfile +16 -9
  12. data/gemfiles/rails6.gemfile +13 -7
  13. data/gemfiles/rails6_1.gemfile +13 -7
  14. data/gemfiles/rails7.gemfile +15 -9
  15. data/gemfiles/rails7_1.gemfile +15 -8
  16. data/gemfiles/rails7_2.gemfile +12 -6
  17. data/gemfiles/rails8.gemfile +7 -7
  18. data/gemfiles/rails8_1.gemfile +4 -4
  19. data/gemspecs/arel_extensions-v1.gemspec +3 -5
  20. data/gemspecs/arel_extensions-v2.gemspec +3 -5
  21. data/lib/arel_extensions/aliases.rb +3 -3
  22. data/lib/arel_extensions/attributes.rb +2 -0
  23. data/lib/arel_extensions/boolean_functions.rb +9 -7
  24. data/lib/arel_extensions/common_sql_functions.rb +5 -3
  25. data/lib/arel_extensions/comparators.rb +6 -4
  26. data/lib/arel_extensions/date_duration.rb +2 -0
  27. data/lib/arel_extensions/helpers.rb +17 -17
  28. data/lib/arel_extensions/insert_manager.rb +5 -1
  29. data/lib/arel_extensions/math.rb +40 -44
  30. data/lib/arel_extensions/math_functions.rb +28 -30
  31. data/lib/arel_extensions/nodes/aggregate_function.rb +4 -4
  32. data/lib/arel_extensions/nodes/blank.rb +6 -4
  33. data/lib/arel_extensions/nodes/case.rb +15 -12
  34. data/lib/arel_extensions/nodes/cast.rb +3 -5
  35. data/lib/arel_extensions/nodes/coalesce.rb +1 -1
  36. data/lib/arel_extensions/nodes/collate.rb +1 -1
  37. data/lib/arel_extensions/nodes/concat.rb +6 -6
  38. data/lib/arel_extensions/nodes/date_diff.rb +40 -49
  39. data/lib/arel_extensions/nodes/duration.rb +2 -2
  40. data/lib/arel_extensions/nodes/format.rb +2 -2
  41. data/lib/arel_extensions/nodes/formatted_date.rb +2 -2
  42. data/lib/arel_extensions/nodes/formatted_number.rb +2 -2
  43. data/lib/arel_extensions/nodes/function.rb +6 -4
  44. data/lib/arel_extensions/nodes/is_null.rb +2 -0
  45. data/lib/arel_extensions/nodes/json.rb +27 -15
  46. data/lib/arel_extensions/nodes/levenshtein_distance.rb +2 -2
  47. data/lib/arel_extensions/nodes/locate.rb +1 -1
  48. data/lib/arel_extensions/nodes/power.rb +2 -2
  49. data/lib/arel_extensions/nodes/rand.rb +2 -2
  50. data/lib/arel_extensions/nodes/repeat.rb +2 -2
  51. data/lib/arel_extensions/nodes/replace.rb +3 -3
  52. data/lib/arel_extensions/nodes/rollup.rb +4 -4
  53. data/lib/arel_extensions/nodes/round.rb +3 -3
  54. data/lib/arel_extensions/nodes/select.rb +1 -1
  55. data/lib/arel_extensions/nodes/std.rb +4 -4
  56. data/lib/arel_extensions/nodes/substring.rb +52 -2
  57. data/lib/arel_extensions/nodes/then.rb +1 -1
  58. data/lib/arel_extensions/nodes/trim.rb +2 -2
  59. data/lib/arel_extensions/nodes/union.rb +3 -3
  60. data/lib/arel_extensions/nodes/union_all.rb +3 -3
  61. data/lib/arel_extensions/nodes/wday.rb +2 -2
  62. data/lib/arel_extensions/null_functions.rb +5 -7
  63. data/lib/arel_extensions/predications.rb +22 -18
  64. data/lib/arel_extensions/string_functions.rb +26 -27
  65. data/lib/arel_extensions/version.rb +3 -1
  66. data/lib/arel_extensions/visitors/convert_format.rb +2 -2
  67. data/lib/arel_extensions/visitors/ibm_db.rb +5 -5
  68. data/lib/arel_extensions/visitors/mssql.rb +91 -92
  69. data/lib/arel_extensions/visitors/mysql.rb +89 -69
  70. data/lib/arel_extensions/visitors/oracle.rb +100 -104
  71. data/lib/arel_extensions/visitors/oracle12.rb +5 -6
  72. data/lib/arel_extensions/visitors/postgresql.rb +107 -94
  73. data/lib/arel_extensions/visitors/sqlite.rb +57 -65
  74. data/lib/arel_extensions/visitors/to_sql.rb +84 -74
  75. data/lib/arel_extensions/visitors.rb +6 -6
  76. data/lib/arel_extensions/warning.rb +5 -5
  77. data/lib/arel_extensions.rb +34 -27
  78. data/test/real_db_test.rb +31 -31
  79. data/test/visitors/test_to_sql.rb +2 -2
  80. data/test/with_ar/all_agnostic_test.rb +149 -15
  81. data/version_v1.rb +3 -1
  82. data/version_v2.rb +3 -1
  83. metadata +2 -30
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ef0f2b58cbe47227a084eb558fae3debe53e40c84fdad659f87dd3a2a6dd9051
4
- data.tar.gz: e360d200dcbfdeb2b05f87b7b9e578d6d8710112e9f16371ecfc4c438dd078d4
3
+ metadata.gz: 8011def39987d0abeefe8d15fe5bcf63b98880fdf59d4f4e5eab80784b2d4542
4
+ data.tar.gz: 067fdf2a9dd1937f7c3e367fe5ebe40e9a6e2406f81128e1c9f4122c65f112b7
5
5
  SHA512:
6
- metadata.gz: c1020a652427f790d4de92c290ec7ea69512b8ef361675e0598260dbe457b6eab17500466c7bed788f24fc531f9bc39e64a7c3dcab28634409da8bfece3b98f0
7
- data.tar.gz: 874ce5525d4ea992a55808e1f6b1f73560d4fa4f17807ba04608d0e1f4abe46d49c6c65fc3f7580c881e001b7c456d823f7a666d6a9089585ffd67dac4d94add
6
+ metadata.gz: 02bb6e60b68f4d53376598a1a2da57eb620ac4e1bbcee1fc354e774780a1c3f220053dcb65f73914628721cbdd0e55473984fbdd2c17211316677b2b396731e7
7
+ data.tar.gz: 1d6e745c21a228465ebd78af1dd83828c85c7ae50230e35f4ab55c2c6c6667a4622c39aba820e0d2e11f8ae75aa161e24faa4d2991d120b16978bc50b8a7f3a4
data/.gitignore CHANGED
@@ -1,7 +1,8 @@
1
1
  *.DS_Store
2
+ *.jar
3
+ *.lock
2
4
  *.swp
3
5
  .bundle
4
- Gemfile.lock
5
6
  config/database.yml
6
7
  coverage/*
7
8
  debug.log
data/.rubocop.yml CHANGED
@@ -2,9 +2,25 @@ plugins:
2
2
  - rubocop-performance
3
3
 
4
4
  AllCops:
5
- DisabledByDefault: true
5
+ NewCops: enable
6
+ TargetRubyVersion: 2.7
7
+ SuggestExtensions: false
8
+ # TODO: enable for tests.
6
9
  Exclude:
7
- - "vendor/**/*"
10
+ - vendor/**/*
11
+ - dev/**/*
12
+ - test/**/*
13
+
14
+ # TODO: enable.
15
+ Gemspec/RequireMFA:
16
+ Enabled: false
17
+
18
+ # TODO: enable.
19
+ Gemspec/RequiredRubyVersion:
20
+ Enabled: false
21
+
22
+ Layout/ArgumentAlignment:
23
+ Enabled: false
8
24
 
9
25
  Layout/EndOfLine:
10
26
  Enabled: true
@@ -18,6 +34,9 @@ Layout/IndentationWidth:
18
34
  Layout/LineLength:
19
35
  Enabled: false
20
36
 
37
+ Layout/MultilineMethodCallIndentation:
38
+ EnforcedStyle: indented
39
+
21
40
  Layout/SpaceAfterComma:
22
41
  Enabled: true
23
42
 
@@ -31,15 +50,66 @@ Layout/SpaceInsideHashLiteralBraces:
31
50
  Enabled: true
32
51
  EnforcedStyle: no_space
33
52
 
53
+ Lint/BinaryOperatorWithIdenticalOperands:
54
+ Enabled: true
55
+ Exclude:
56
+ - test/with_ar/all_agnostic_test.rb
57
+
58
+ # TODO: should we enable it? It's complaining about things like (1*2+3)
59
+ Lint/AmbiguousOperatorPrecedence:
60
+ Enabled: false
61
+
34
62
  Layout/TrailingEmptyLines:
35
63
  Enabled: true
36
64
 
65
+ # TODO: enable.
66
+ Metrics/AbcSize:
67
+ Enabled: false
68
+
69
+ # TODO: enable.
37
70
  Metrics/BlockLength:
38
71
  Enabled: false
39
72
 
73
+ Metrics/BlockNesting:
74
+ Enabled: false
75
+
76
+ # TODO: enable.
77
+ Metrics/MethodLength:
78
+ Enabled: false
79
+
80
+ Metrics/ModuleLength:
81
+ Enabled: false
82
+
83
+ # TODO: enable.
84
+ Metrics/CyclomaticComplexity:
85
+ Enabled: false
86
+
87
+ # TODO: enable.
88
+ Metrics/PerceivedComplexity:
89
+ Enabled: false
90
+
91
+ Naming/AsciiIdentifiers:
92
+ Enabled: true
93
+ Exclude:
94
+ - lib/arel_extensions/boolean_functions.rb
95
+
96
+ Naming/MethodName:
97
+ Exclude:
98
+ - lib/arel_extensions/boolean_functions.rb
99
+
100
+ # TODO: enable.
101
+ Naming/MethodParameterName:
102
+ Enabled: false
103
+
40
104
  Naming/FileName:
41
105
  Enabled: true
42
106
 
107
+ Style/BlockDelimiters:
108
+ Enabled: false
109
+
110
+ Style/ClassAndModuleChildren:
111
+ Enabled: false
112
+
43
113
  Style/CollectionMethods:
44
114
  Enabled: true
45
115
 
@@ -52,12 +122,33 @@ Style/CommentAnnotation:
52
122
  Style/ConditionalAssignment:
53
123
  Enabled: true
54
124
 
125
+ # TODO: enable.
126
+ Style/Documentation:
127
+ Enabled: false
128
+
129
+ Style/EachWithObject:
130
+ Enabled: false
131
+
55
132
  Style/EmptyElse:
56
133
  Enabled: true
57
134
 
58
135
  Style/Encoding:
59
136
  Enabled: true
60
137
 
138
+ Style/FormatString:
139
+ Enabled: false
140
+
141
+ # TODO: enable.
142
+ Style/GlobalVars:
143
+ Enabled: false
144
+
145
+ # TODO: enable.
146
+ Style/GuardClause:
147
+ Enabled: false
148
+
149
+ Style/IfUnlessModifier:
150
+ Enabled: false
151
+
61
152
  Style/HashSyntax:
62
153
  Enabled: true
63
154
  EnforcedStyle: ruby19
@@ -68,9 +159,23 @@ Style/MethodCallWithArgsParentheses:
68
159
  Style/MethodCallWithoutArgsParentheses:
69
160
  Enabled: true
70
161
 
162
+ Style/MultipleComparison:
163
+ Enabled: true
164
+ Exclude:
165
+ - lib/arel_extensions/boolean_functions.rb
166
+
71
167
  Style/NegatedIf:
72
168
  Enabled: false
73
169
 
170
+ Style/NegatedIfElseCondition:
171
+ Enabled: false
172
+
173
+ Style/NegatedWhile:
174
+ Enabled: false
175
+
176
+ Style/NestedTernary:
177
+ Enabled: false
178
+
74
179
  Style/NumericLiterals:
75
180
  Enabled: true
76
181
 
@@ -83,10 +188,19 @@ Style/RedundantRegexpCharacterClass:
83
188
  Style/RedundantReturn:
84
189
  Enabled: true
85
190
 
191
+ # TODO: enable.
192
+ # We have some `... rescue nil` going on, let's keep it this way for now.
193
+ Style/RescueModifier:
194
+ Enabled: false
195
+
86
196
  # Even when conservative, this is unsafe.
87
- #Style/StringConcatenation:
88
- # Enabled: true
89
- # Mode: 'conservative'
197
+ # Style/StringConcatenation:
198
+ # Enabled: true
199
+ # Mode: 'conservative'
200
+
201
+ # This detects User.at[:id] + '1' as string concatenation, so never enable.
202
+ Style/StringConcatenation:
203
+ Enabled: false
90
204
 
91
205
  Style/StringLiterals:
92
206
  Enabled: true
@@ -94,9 +208,21 @@ Style/StringLiterals:
94
208
  Style/SymbolArray:
95
209
  Enabled: true
96
210
 
211
+ Style/UnlessElse:
212
+ Enabled: false
213
+
214
+ Style/WhileUntilDo:
215
+ Enabled: false
216
+
97
217
  Style/WordArray:
98
218
  Enabled: true
99
219
 
220
+ Style/YodaCondition:
221
+ Enabled: false
222
+
223
+ # Performance cops have been transferred to rubocop-performance gem.
224
+ require: rubocop-performance
225
+
100
226
  Performance/DoubleStartEndWith:
101
227
  Enabled: true
102
228
 
data/Makefile CHANGED
@@ -1,11 +1,38 @@
1
1
  COMPOSE_FILE := dev/compose.yaml
2
2
  DC := docker compose -f $(COMPOSE_FILE)
3
3
 
4
- .PHONY: down rebuild shell up
4
+ .PHONY: all clean down install lint publish rebuild shell test up
5
+
6
+ all: clean install
7
+
8
+ clean:
9
+ rm -rf .bundle Gemfile.lock vendor
5
10
 
6
11
  down:
7
12
  $(DC) down
8
13
 
14
+ install:
15
+ bundle install
16
+
17
+ lint:
18
+ bundle exec rubocop --config .rubocop.yml --require rubocop-performance
19
+
20
+ lint-fix:
21
+ bundle exec rubocop --config .rubocop.yml -a
22
+
23
+ local-%:
24
+ @version="$*"; \
25
+ file="gemfiles/rails$${version//./_}.gemfile"; \
26
+ if [ ! -f "$$file" ]; then \
27
+ echo "No such Gemfile: $$file"; \
28
+ exit 1; \
29
+ fi; \
30
+ echo "Using $$file"; \
31
+ bundle config set --local gemfile "$$file"
32
+
33
+ publish:
34
+ ./bin/publish
35
+
9
36
  rebuild:
10
37
  $(DC) build --no-cache
11
38
 
@@ -13,6 +40,9 @@ rebuild:
13
40
  shell: up
14
41
  $(DC) exec arelx bash
15
42
 
43
+ test:
44
+ bundle exec rake test
45
+
16
46
  # Boot everything and keep it running (daemon mode)
17
47
  up:
18
48
  $(DC) up -d
data/NEWS.md CHANGED
@@ -2,6 +2,21 @@
2
2
 
3
3
  ## [unreleased]
4
4
 
5
+ ## Release v2.5.0/v1.7.0 (02-09-2026)
6
+
7
+ - Fix a typo preventing optimizer hints from being applied on SELECT in MySQL.
8
+ - Fix a bug (crash) in Group Concat of MSSQL.
9
+ - Fix a crash when building a JSON document from numeric literal values (e.g. `Arel.json(col => 1)`), on sqlite and mssql.
10
+ - MS SQL: string casts and MD5 input now use `varchar(MAX)`, so long strings are
11
+ no longer truncated at 30 characters (the default when only `varchar` is specified).
12
+ - PostgreSQL: JSON creation from non-JSON text now encodes it (`to_jsonb` instead of a
13
+ bare `::jsonb` cast), and `json.set(key, nil)` sets the JSON null member instead of the db's NULL.
14
+ - PostgreSQL: an empty JSON array (`Arel.json([])`) is now rendered as `'[]'::jsonb`
15
+ instead of `to_jsonb(array[])`.
16
+ - JSON: Booleans (`true`/`false`) are now supported as JSON values, whether as literals
17
+ (`Arel.json({ col => true })`) or boolean columns (`Arel.json({ col => bool_col })`).
18
+ - String slicing: the `[range..]` syntax, and calls to `substring` now behave exactly as in Ruby and MySQL, notably handling negative and beginless/endless indices.
19
+
5
20
  ## Release v2.4.0/v1.6.0 (23-12-2025)
6
21
 
7
22
  - Drop supoprt for Ruby < 2.7.
data/README.md CHANGED
@@ -345,7 +345,7 @@ User.connection.execute(insert_manager.to_sql)
345
345
  <td class="ok">✔</td>
346
346
  </tr>
347
347
  <tr>
348
- <th class="tg-ffjm" rowspan="17"><div>String functions</div></th>
348
+ <th class="tg-ffjm" rowspan="21"><div>String functions</div></th>
349
349
  <td class="tg-yw4l">CONCAT<br>column + "string"</td>
350
350
  <td class="ok">✔</td>
351
351
  <td class="ok">✔</td>
@@ -490,7 +490,7 @@ User.connection.execute(insert_manager.to_sql)
490
490
  <td class="ok">✔</td>
491
491
  </tr>
492
492
  <tr>
493
- <td class="tg-yw4l">SUBSTRING<br/>column[1..2]<br/>column.substring(1)<br/>column.substring(1, 1)</td>
493
+ <td class="tg-yw4l">SUBSTRING (start/length)<br/>column.substring(1)<br/>column.substring(1, 1)<br/>column[1]<br/>column[0, 2]</td>
494
494
  <td class="ok">✔</td>
495
495
  <td class="tg-j6lv">SUBSTR()</td>
496
496
  <td class="tg-j6lv">SUBSTR()</td>
@@ -498,6 +498,15 @@ User.connection.execute(insert_manager.to_sql)
498
498
  <td class="ok">✔</td>
499
499
  <td class="ok">✔</td>
500
500
  </tr>
501
+ <tr>
502
+ <td class="tg-yw4l">SUBSTRING (Ruby range slicing)<br/>column[1..2]<br/>column[-2..]<br/>column[..2]<br/>⚠️ empty-string results read as NULL on Oracle</td>
503
+ <td class="ok">✔</td>
504
+ <td class="ok">✔</td>
505
+ <td class="ok">✔</td>
506
+ <td class="ok">✔</td>
507
+ <td class="ok">✔</td>
508
+ <td class="tg-j6lv">not implemented</td>
509
+ </tr>
501
510
  <tr>
502
511
  <td class="tg-yw4l">TRIM (leading)<br>column.trim("LEADING","M")</td>
503
512
  <td class="ok">✔</td>
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler'
2
4
  Bundler::GemHelper.install_tasks name: 'arel_extensions'
3
5
 
@@ -51,7 +53,7 @@ end
51
53
 
52
54
  # Useful shorthands.
53
55
  namespace :test do
54
- task :sql => :to_sql
55
- task :pg => :postgresql
56
- task :postgres => :postgresql
56
+ task sql: :to_sql
57
+ task pg: :postgresql
58
+ task postgres: :postgresql
57
59
  end
@@ -1,4 +1,6 @@
1
- $:.push File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
2
4
  require 'arel_extensions/version'
3
5
 
4
6
  Gem::Specification.new do |s|
@@ -17,11 +19,7 @@ Gem::Specification.new do |s|
17
19
 
18
20
  # Manifest
19
21
  s.files = `git ls-files`.split("\n")
20
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
22
  s.require_paths = ['lib']
22
23
 
23
24
  s.add_dependency('activerecord', '>= 6.0')
24
-
25
- s.add_development_dependency('minitest', '~> 5.9')
26
- s.add_development_dependency('rake', '~> 12.3.3')
27
25
  end
@@ -1,29 +1,36 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gem 'arel', '~> 7.0'
4
6
 
5
7
  group :development, :test do
6
- gem 'activesupport', '~> 5.0'
8
+ gem 'minitest', '~> 5.9'
9
+ gem 'rake', '~> 12.3.3'
10
+ gem 'rubocop'
11
+ gem 'rubocop-performance'
12
+
7
13
  gem 'activemodel', '~> 5.0'
8
14
  gem 'activerecord', '5.0.6'
15
+ gem 'activesupport', '~> 5.0'
9
16
 
10
- gem 'sqlite3', '<= 1.3.13', platforms: %i[mri mswin mingw]
11
17
  gem 'mysql2', '0.4.10', platforms: %i[mri mswin mingw]
12
18
  gem 'pg', '< 1.0.0', platforms: %i[mri mingw]
19
+ gem 'sqlite3', '<= 1.3.13', platforms: %i[mri mswin mingw]
13
20
 
14
- gem 'tiny_tds', platforms: %i[mri mingw] if RUBY_PLATFORM.match?(/windows/)
21
+ gem 'tiny_tds', platforms: %i[mri mingw] if RUBY_PLATFORM.include?('windows')
15
22
  # gem "activerecord-sqlserver-adapter", platforms: [:mri, :mingw]
16
23
 
17
- gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
18
- gem 'activerecord-oracle_enhanced-adapter', '~> 1.7' if ENV.has_key? 'ORACLE_HOME'
24
+ gem 'activerecord-oracle_enhanced-adapter', '~> 1.7' if ENV.key? 'ORACLE_HOME'
25
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.key? 'ORACLE_HOME'
19
26
 
20
27
  # for JRuby
21
28
  gem 'activerecord-jdbc-adapter', github: 'jruby/activerecord-jdbc-adapter', tag: 'v50.0', platforms: :jruby
22
- gem 'jdbc-sqlite3', platforms: :jruby
23
- gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
29
+ gem 'activerecord-jdbcmssql-adapter', platforms: :jruby
24
30
  gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
25
31
  gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
26
- gem 'activerecord-jdbcmssql-adapter', platforms: :jruby
32
+ gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
33
+ gem 'jdbc-sqlite3', platforms: :jruby
27
34
  end
28
35
 
29
36
  gemspec path: Dir.pwd
@@ -1,30 +1,32 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
- gem 'rails', '5.1.4'
4
5
  gem 'arel', '~> 8'
6
+ gem 'rails', '5.1.4'
5
7
 
6
8
  group :development, :test do
7
- gem 'activesupport', '5.1.4'
8
9
  gem 'activemodel', '5.1.4'
9
10
  gem 'activerecord', '5.1.4'
11
+ gem 'activesupport', '5.1.4'
10
12
 
11
- gem 'sqlite3', '<= 1.3.13', platforms: %i[mri mswin mingw]
12
13
  gem 'mysql2', '0.4.10', platforms: %i[mri mswin mingw]
13
14
  gem 'pg', '< 1.0.0', platforms: %i[mri mingw]
15
+ gem 'sqlite3', '<= 1.3.13', platforms: %i[mri mswin mingw]
14
16
 
15
- gem 'tiny_tds', platforms: %i[mri mingw] if RUBY_PLATFORM.match?(/windows/)
17
+ gem 'tiny_tds', platforms: %i[mri mingw] if RUBY_PLATFORM.include?('windows')
16
18
  # gem "activerecord-sqlserver-adapter", platforms: [:mri, :mingw]
17
19
 
18
- gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
19
- gem 'activerecord-oracle_enhanced-adapter', '~> 1.8' if ENV.has_key? 'ORACLE_HOME'
20
+ gem 'activerecord-oracle_enhanced-adapter', '~> 1.8' if ENV.key? 'ORACLE_HOME'
21
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.key? 'ORACLE_HOME'
20
22
 
21
23
  # for JRuby
22
24
  gem 'activerecord-jdbc-adapter', github: 'jruby/activerecord-jdbc-adapter', tag: 'v51.0', platforms: :jruby
23
- gem 'jdbc-sqlite3', platforms: :jruby
24
- gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
25
+ gem 'activerecord-jdbcmssql-adapter', platforms: :jruby
25
26
  gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
26
27
  gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
27
- gem 'activerecord-jdbcmssql-adapter', platforms: :jruby
28
+ gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
29
+ gem 'jdbc-sqlite3', platforms: :jruby
28
30
  end
29
31
 
30
32
  gemspec path: Dir.pwd
@@ -1,32 +1,39 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
- gem 'rails', '~> 5.2.0'
4
5
  gem 'arel', '~> 9'
6
+ gem 'rails', '~> 5.2.0'
5
7
 
6
8
  group :development, :test do
7
- gem 'bigdecimal', '1.3.5', platforms: %i[mri mingw x64_mingw mswin]
8
- gem 'activesupport', '~> 5.2.0'
9
+ gem 'minitest', '~> 5.9'
10
+ gem 'rake', '~> 12.3.3'
11
+ gem 'rubocop'
12
+ gem 'rubocop-performance'
13
+
9
14
  gem 'activemodel', '~> 5.2.0'
10
15
  gem 'activerecord', '~> 5.2.0'
16
+ gem 'activesupport', '~> 5.2.0'
17
+ gem 'bigdecimal', '1.3.5', platforms: %i[mri mingw x64_mingw mswin]
11
18
 
12
- gem 'sqlite3', '<= 1.3.13', platforms: [:mri]
13
19
  gem 'mysql2', '0.4.10', platforms: [:mri]
14
20
  gem 'pg', '< 1.0.0', platforms: [:mri]
21
+ gem 'sqlite3', '<= 1.3.13', platforms: [:mri]
15
22
 
16
- gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
17
23
  gem 'activerecord-sqlserver-adapter', '~> 5.2', platforms: %i[mri mingw x64_mingw mswin]
24
+ gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
18
25
  gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
19
26
 
20
- gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
21
- gem 'activerecord-oracle_enhanced-adapter', '~> 5.2.0' if ENV.has_key? 'ORACLE_HOME'
27
+ gem 'activerecord-oracle_enhanced-adapter', '~> 5.2.0' if ENV.key? 'ORACLE_HOME'
28
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.key? 'ORACLE_HOME'
22
29
 
23
30
  # for JRuby
24
31
  gem 'activerecord-jdbc-adapter', github: 'jruby/activerecord-jdbc-adapter', tag: 'v52.7', platforms: :jruby
25
- gem 'jdbc-sqlite3', platforms: :jruby
26
- gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
27
32
  gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
28
33
  gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
34
+ gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
29
35
  gem 'activerecord-jdbcsqlserver-adapter', '~> 52.0', platforms: :jruby
36
+ gem 'jdbc-sqlite3', platforms: :jruby
30
37
  end
31
38
 
32
39
  gemspec path: Dir.pwd
@@ -1,26 +1,32 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gem 'rails', '~> 6.0.0'
4
6
 
5
7
  group :development, :test do
6
- gem 'ruby-lsp', platforms: %i[mri]
7
- gem 'debug', platforms: %i[mri]
8
8
  gem 'concurrent-ruby', '1.3.4' # Need to pin b/c of a known issue https://github.com/rails/rails/issues/54260
9
+ gem 'debug', platforms: %i[mri]
10
+ gem 'minitest', '~> 5.9'
11
+ gem 'rake', '~> 12.3.3'
12
+ gem 'rubocop'
13
+ gem 'rubocop-performance'
14
+ gem 'ruby-lsp', platforms: %i[mri]
9
15
 
10
- gem 'activesupport', '~> 6.0.0'
11
16
  gem 'activemodel', '~> 6.0.0'
12
17
  gem 'activerecord', '~> 6.0.0'
18
+ gem 'activesupport', '~> 6.0.0'
13
19
 
14
- gem 'sqlite3', '~> 1.4', platforms: [:mri]
15
20
  gem 'mysql2', '0.5.2', platforms: [:mri]
16
21
  gem 'pg', '< 1.0.0', platforms: [:mri]
22
+ gem 'sqlite3', '~> 1.4', platforms: [:mri]
17
23
 
18
- gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
19
24
  gem 'activerecord-sqlserver-adapter', '~> 6.0', platforms: %i[mri mingw x64_mingw mswin]
25
+ gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
20
26
  gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
21
27
 
22
- gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
23
- gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.has_key? 'ORACLE_HOME'
28
+ gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.key? 'ORACLE_HOME'
29
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.key? 'ORACLE_HOME'
24
30
 
25
31
  # for JRuby
26
32
  gem 'activerecord-jdbc-alt-adapter', '~> 60.0', platform: :jruby, require: true
@@ -1,26 +1,32 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gem 'rails', '~> 6.1.0'
4
6
 
5
7
  group :development, :test do
6
- gem 'ruby-lsp', platforms: %i[mri]
7
- gem 'debug', platforms: %i[mri]
8
8
  gem 'concurrent-ruby', '1.3.4' # Need to pin b/c of a known issue https://github.com/rails/rails/issues/54260
9
+ gem 'debug', platforms: %i[mri]
10
+ gem 'minitest', '~> 5.9'
11
+ gem 'rake', '~> 12.3.3'
12
+ gem 'rubocop'
13
+ gem 'rubocop-performance'
14
+ gem 'ruby-lsp', platforms: %i[mri]
9
15
 
10
- gem 'activesupport', '~> 6.1.0'
11
16
  gem 'activemodel', '~> 6.1.0'
12
17
  gem 'activerecord', '~> 6.1.0'
18
+ gem 'activesupport', '~> 6.1.0'
13
19
 
14
- gem 'sqlite3', '~> 1.4', platforms: [:mri]
15
20
  gem 'mysql2', '~>0.5', platforms: [:mri]
16
21
  gem 'pg', '~> 1.1', platforms: [:mri]
22
+ gem 'sqlite3', '~> 1.4', platforms: [:mri]
17
23
 
18
- gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
19
24
  gem 'activerecord-sqlserver-adapter', '~> 6.1.0', platforms: %i[mri mingw x64_mingw mswin]
25
+ gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
20
26
  gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
21
27
 
22
- gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
23
- gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.has_key? 'ORACLE_HOME'
28
+ gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.key? 'ORACLE_HOME'
29
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.key? 'ORACLE_HOME'
24
30
 
25
31
  # for JRuby
26
32
  gem 'activerecord-jdbc-alt-adapter', '~> 61.0', platform: :jruby, require: true
@@ -1,34 +1,40 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gem 'rails', '~> 7.0.1'
4
6
 
5
7
  group :development, :test do
6
- gem 'ruby-lsp', platforms: %i[mri]
7
- gem 'debug', platforms: %i[mri]
8
8
  gem 'concurrent-ruby', '1.3.4' # Need to pin b/c of a known issue https://github.com/rails/rails/issues/54260
9
+ gem 'debug', platforms: %i[mri]
10
+ gem 'minitest', '~> 5.9'
11
+ gem 'rake', '~> 12.3.3'
12
+ gem 'rubocop'
13
+ gem 'rubocop-performance'
14
+ gem 'ruby-lsp', platforms: %i[mri]
9
15
 
10
- gem 'activesupport', '~> 7.0.1'
11
16
  gem 'activemodel', '~> 7.0.1'
12
17
  gem 'activerecord', '~> 7.0.1'
18
+ gem 'activesupport', '~> 7.0.1'
13
19
 
14
- gem 'sqlite3', '~> 1.4', platforms: [:mri]
15
20
  gem 'mysql2', '~>0.5', platforms: [:mri]
16
21
  gem 'pg', '~> 1.1', platforms: [:mri]
22
+ gem 'sqlite3', '~> 1.4', platforms: [:mri]
17
23
 
18
- gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
19
24
  gem 'activerecord-sqlserver-adapter', '~> 7.0.7', platforms: %i[mri mingw x64_mingw mswin]
25
+ gem 'tiny_tds', platforms: %i[mri mingw x64_mingw mswin]
20
26
  gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw]
21
27
 
22
- gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.has_key? 'ORACLE_HOME'
23
- gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.has_key? 'ORACLE_HOME'
28
+ gem 'activerecord-oracle_enhanced-adapter', '~> 6.0.0' if ENV.key? 'ORACLE_HOME'
29
+ gem 'ruby-oci8', platforms: %i[mri mswin mingw] if ENV.key? 'ORACLE_HOME'
24
30
 
25
31
  # for JRuby
26
- gem 'jdbc-mssql', platforms: :jruby, require: true
27
- gem 'jdbc-sqlite3', platform: :jruby
28
32
  gem 'activerecord-jdbc-alt-adapter', '~> 70.0', platform: :jruby, require: true
29
33
  gem 'activerecord-jdbcmysql-adapter', platforms: :jruby
30
34
  gem 'activerecord-jdbcpostgresql-adapter', platforms: :jruby
31
35
  gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
36
+ gem 'jdbc-mssql', platforms: :jruby, require: true
37
+ gem 'jdbc-sqlite3', platform: :jruby
32
38
 
33
39
  # Ruby 3.4+ removes the following gems from the standard distribution.
34
40
  # Warnings are emitted from 3.3 .