activerecord-spanner-adapter 2.6.0 → 2.7.1

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 (82) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/acceptance-tests-on-emulator.yaml +9 -13
  3. data/.github/workflows/acceptance-tests-on-production.yaml +4 -3
  4. data/.github/workflows/ci.yaml +8 -12
  5. data/.github/workflows/nightly-acceptance-tests-on-emulator.yaml +9 -13
  6. data/.github/workflows/nightly-acceptance-tests-on-production.yaml +4 -3
  7. data/.github/workflows/nightly-unit-tests.yaml +8 -12
  8. data/.github/workflows/rubocop.yaml +3 -3
  9. data/.github/workflows/samples.yaml +8 -12
  10. data/.gitignore +0 -1
  11. data/.release-please-manifest.json +1 -1
  12. data/.rubocop.yml +2 -0
  13. data/Appraisals +15 -0
  14. data/CHANGELOG.md +19 -0
  15. data/Gemfile +12 -22
  16. data/Gemfile.lock +483 -0
  17. data/README.md +1 -0
  18. data/acceptance/cases/migration/change_table_test.rb +4 -14
  19. data/acceptance/cases/models/generated_column_test.rb +8 -26
  20. data/acceptance/test_helper.rb +10 -22
  21. data/activerecord-spanner-adapter.gemspec +2 -1
  22. data/benchmarks/db/migrate/01_create_tables.rb +1 -1
  23. data/examples/rails/README.md +1 -1
  24. data/examples/snippets/Rakefile +0 -7
  25. data/examples/snippets/array-data-type/db/migrate/01_create_tables.rb +1 -1
  26. data/examples/snippets/batch-dml/db/migrate/01_create_tables.rb +1 -1
  27. data/examples/snippets/bulk-insert/db/migrate/01_create_tables.rb +1 -1
  28. data/examples/snippets/commit-timestamp/db/migrate/01_create_tables.rb +1 -1
  29. data/examples/snippets/create-records/db/migrate/01_create_tables.rb +1 -1
  30. data/examples/snippets/date-data-type/db/migrate/01_create_tables.rb +1 -1
  31. data/examples/snippets/generated-column/db/migrate/01_create_tables.rb +1 -1
  32. data/examples/snippets/hints/db/migrate/01_create_tables.rb +1 -1
  33. data/examples/snippets/interleaved-tables/README.md +2 -5
  34. data/examples/snippets/isolation-level/db/migrate/01_create_tables.rb +1 -1
  35. data/examples/snippets/migrations/db/migrate/01_create_tables.rb +1 -1
  36. data/examples/snippets/mutations/db/migrate/01_create_tables.rb +1 -1
  37. data/examples/snippets/optimistic-locking/db/migrate/01_create_tables.rb +1 -1
  38. data/examples/snippets/partitioned-dml/db/migrate/01_create_tables.rb +1 -1
  39. data/examples/snippets/query-logs/application.rb +3 -3
  40. data/examples/snippets/query-logs/db/migrate/01_create_tables.rb +1 -1
  41. data/examples/snippets/quickstart/db/migrate/01_create_tables.rb +1 -1
  42. data/examples/snippets/read-only-transactions/db/migrate/01_create_tables.rb +1 -1
  43. data/examples/snippets/read-write-transactions/db/migrate/01_create_tables.rb +1 -1
  44. data/examples/snippets/stale-reads/db/migrate/01_create_tables.rb +1 -1
  45. data/examples/snippets/tags/db/migrate/01_create_tables.rb +1 -1
  46. data/examples/snippets/timestamp-data-type/db/migrate/01_create_tables.rb +1 -1
  47. data/gemfiles/7.1.gemfile +18 -0
  48. data/gemfiles/7.1.gemfile.lock +389 -0
  49. data/gemfiles/7.2.gemfile +18 -0
  50. data/gemfiles/7.2.gemfile.lock +479 -0
  51. data/gemfiles/8.0.gemfile +18 -0
  52. data/gemfiles/8.0.gemfile.lock +480 -0
  53. data/gemfiles/8.1.gemfile +18 -0
  54. data/gemfiles/8.1.gemfile.lock +478 -0
  55. data/lib/active_record/connection_adapters/spanner/database_statements.rb +62 -95
  56. data/lib/active_record/connection_adapters/spanner/quoting.rb +0 -22
  57. data/lib/active_record/connection_adapters/spanner/schema_creation.rb +3 -15
  58. data/lib/active_record/connection_adapters/spanner/schema_statements.rb +0 -4
  59. data/lib/active_record/connection_adapters/spanner_adapter.rb +12 -14
  60. data/lib/active_record/type/spanner/spanner_active_record_converter.rb +33 -2
  61. data/lib/activerecord_spanner_adapter/base.rb +5 -27
  62. data/lib/activerecord_spanner_adapter/connection.rb +0 -20
  63. data/lib/activerecord_spanner_adapter/information_schema.rb +1 -4
  64. data/lib/activerecord_spanner_adapter/table.rb +0 -22
  65. data/lib/activerecord_spanner_adapter/version.rb +1 -1
  66. data/lib/arel/visitors/spanner.rb +12 -15
  67. data/lib/spanner_client_ext.rb +6 -2
  68. metadata +27 -17
  69. data/acceptance/cases/interleaved_associations/has_many_associations_using_interleaved_test.rb +0 -221
  70. data/acceptance/cases/models/interleave_test.rb +0 -113
  71. data/acceptance/cases/transactions/optimistic_locking_test.rb +0 -152
  72. data/acceptance/models/album.rb +0 -15
  73. data/acceptance/models/track.rb +0 -23
  74. data/examples/snippets/interleaved-tables-before-7.1/README.md +0 -167
  75. data/examples/snippets/interleaved-tables-before-7.1/Rakefile +0 -13
  76. data/examples/snippets/interleaved-tables-before-7.1/application.rb +0 -122
  77. data/examples/snippets/interleaved-tables-before-7.1/config/database.yml +0 -9
  78. data/examples/snippets/interleaved-tables-before-7.1/db/migrate/01_create_tables.rb +0 -44
  79. data/examples/snippets/interleaved-tables-before-7.1/db/seeds.rb +0 -40
  80. data/examples/snippets/interleaved-tables-before-7.1/models/album.rb +0 -20
  81. data/examples/snippets/interleaved-tables-before-7.1/models/singer.rb +0 -18
  82. data/examples/snippets/interleaved-tables-before-7.1/models/track.rb +0 -28
data/Gemfile.lock ADDED
@@ -0,0 +1,483 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ activerecord-spanner-adapter (2.7.1)
5
+ activerecord (>= 7.1, < 9)
6
+ google-cloud-spanner (~> 2.25)
7
+ google-cloud-spanner-v1 (~> 1.7)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ activemodel (7.1.6)
13
+ activesupport (= 7.1.6)
14
+ activerecord (7.1.6)
15
+ activemodel (= 7.1.6)
16
+ activesupport (= 7.1.6)
17
+ timeout (>= 0.4.0)
18
+ activesupport (7.1.6)
19
+ base64
20
+ benchmark (>= 0.3)
21
+ bigdecimal
22
+ concurrent-ruby (~> 1.0, >= 1.0.2)
23
+ connection_pool (>= 2.2.5)
24
+ drb
25
+ i18n (>= 1.6, < 2)
26
+ logger (>= 1.4.2)
27
+ minitest (>= 5.1)
28
+ mutex_m
29
+ securerandom (>= 0.3)
30
+ tzinfo (~> 2.0)
31
+ addressable (2.9.0)
32
+ public_suffix (>= 2.0.2, < 8.0)
33
+ appraisal (2.5.0)
34
+ bundler
35
+ rake
36
+ thor (>= 0.14.0)
37
+ ast (2.4.3)
38
+ autotest-suffix (1.1.0)
39
+ base64 (0.3.0)
40
+ benchmark (0.5.0)
41
+ bigdecimal (3.3.1)
42
+ byebug (13.0.0)
43
+ reline (>= 0.6.0)
44
+ coderay (1.1.3)
45
+ concurrent-ruby (1.3.8)
46
+ connection_pool (3.0.2)
47
+ docile (1.4.1)
48
+ docker-api (2.4.0)
49
+ excon (>= 0.64.0)
50
+ multi_json
51
+ drb (2.2.3)
52
+ erb (6.0.7)
53
+ excon (1.7.3)
54
+ logger
55
+ faraday (2.15.0)
56
+ faraday-net_http (>= 2.0, < 3.6)
57
+ json
58
+ logger
59
+ faraday-net_http (3.5.0)
60
+ net-http (~> 0.5)
61
+ faraday-retry (2.4.0)
62
+ faraday (~> 2.0)
63
+ gapic-common (1.5.1)
64
+ faraday (>= 1.9, < 3.a)
65
+ faraday-retry (>= 1.0, < 3.a)
66
+ google-cloud-env (~> 2.2)
67
+ google-logging-utils (~> 0.1)
68
+ google-protobuf (~> 4.26)
69
+ googleapis-common-protos (~> 1.6)
70
+ googleapis-common-protos-types (~> 1.15)
71
+ googleauth (~> 1.12)
72
+ grpc (>= 1.83, < 2.a)
73
+ google-cloud-core (1.9.0)
74
+ google-cloud-env (>= 1.0, < 3.a)
75
+ google-cloud-errors (~> 1.0)
76
+ google-cloud-env (2.4.1)
77
+ base64 (~> 0.2)
78
+ faraday (>= 1.0, < 3.a)
79
+ google-cloud-errors (1.7.0)
80
+ google-cloud-spanner (2.36.1)
81
+ bigdecimal (~> 3.0)
82
+ concurrent-ruby (~> 1.0)
83
+ google-cloud-core (~> 1.7)
84
+ google-cloud-spanner-admin-database-v1 (~> 1.4)
85
+ google-cloud-spanner-admin-instance-v1 (~> 1.6)
86
+ google-cloud-spanner-v1 (~> 1.6)
87
+ google-cloud-spanner-admin-database-v1 (1.6.1)
88
+ gapic-common (>= 0.25.0, < 2.a)
89
+ google-cloud-errors (~> 1.0)
90
+ grpc-google-iam-v1 (~> 1.1)
91
+ google-cloud-spanner-admin-instance-v1 (1.6.0)
92
+ gapic-common (>= 0.25.0, < 2.a)
93
+ google-cloud-errors (~> 1.0)
94
+ grpc-google-iam-v1 (~> 1.1)
95
+ google-cloud-spanner-v1 (1.19.2)
96
+ gapic-common (~> 1.3)
97
+ google-cloud-errors (~> 1.0)
98
+ google-logging-utils (0.2.1)
99
+ google-protobuf (4.36.2)
100
+ bigdecimal
101
+ rake (~> 13.3)
102
+ google-protobuf (4.36.2-aarch64-linux-gnu)
103
+ bigdecimal
104
+ rake (~> 13.3)
105
+ google-protobuf (4.36.2-aarch64-linux-musl)
106
+ bigdecimal
107
+ rake (~> 13.3)
108
+ google-protobuf (4.36.2-arm64-darwin)
109
+ bigdecimal
110
+ rake (~> 13.3)
111
+ google-protobuf (4.36.2-x86-linux-gnu)
112
+ bigdecimal
113
+ rake (~> 13.3)
114
+ google-protobuf (4.36.2-x86-linux-musl)
115
+ bigdecimal
116
+ rake (~> 13.3)
117
+ google-protobuf (4.36.2-x86_64-darwin)
118
+ bigdecimal
119
+ rake (~> 13.3)
120
+ google-protobuf (4.36.2-x86_64-linux-gnu)
121
+ bigdecimal
122
+ rake (~> 13.3)
123
+ google-protobuf (4.36.2-x86_64-linux-musl)
124
+ bigdecimal
125
+ rake (~> 13.3)
126
+ google-style (1.32.1)
127
+ rubocop (~> 1.76)
128
+ googleapis-common-protos (1.10.0)
129
+ google-protobuf (~> 4.26)
130
+ googleapis-common-protos-types (~> 1.21)
131
+ grpc (~> 1.41)
132
+ googleapis-common-protos-types (1.23.0)
133
+ google-protobuf (~> 4.26)
134
+ googleauth (1.17.5)
135
+ faraday (>= 1.0, < 3.a)
136
+ google-cloud-env (~> 2.2)
137
+ google-logging-utils (~> 0.1)
138
+ jwt (>= 1.4, < 4.0)
139
+ os (>= 0.9, < 2.0)
140
+ pstore (~> 0.1)
141
+ signet (>= 0.16, < 2.a)
142
+ grpc (1.84.0)
143
+ google-protobuf (>= 3.25, < 5.0)
144
+ googleapis-common-protos-types (~> 1.0)
145
+ grpc (1.84.0-aarch64-linux-gnu)
146
+ google-protobuf (>= 3.25, < 5.0)
147
+ googleapis-common-protos-types (~> 1.0)
148
+ grpc (1.84.0-aarch64-linux-musl)
149
+ google-protobuf (>= 3.25, < 5.0)
150
+ googleapis-common-protos-types (~> 1.0)
151
+ grpc (1.84.0-arm64-darwin)
152
+ google-protobuf (>= 3.25, < 5.0)
153
+ googleapis-common-protos-types (~> 1.0)
154
+ grpc (1.84.0-x86-linux-gnu)
155
+ google-protobuf (>= 3.25, < 5.0)
156
+ googleapis-common-protos-types (~> 1.0)
157
+ grpc (1.84.0-x86-linux-musl)
158
+ google-protobuf (>= 3.25, < 5.0)
159
+ googleapis-common-protos-types (~> 1.0)
160
+ grpc (1.84.0-x86_64-darwin)
161
+ google-protobuf (>= 3.25, < 5.0)
162
+ googleapis-common-protos-types (~> 1.0)
163
+ grpc (1.84.0-x86_64-linux-gnu)
164
+ google-protobuf (>= 3.25, < 5.0)
165
+ googleapis-common-protos-types (~> 1.0)
166
+ grpc (1.84.0-x86_64-linux-musl)
167
+ google-protobuf (>= 3.25, < 5.0)
168
+ googleapis-common-protos-types (~> 1.0)
169
+ grpc-google-iam-v1 (1.10.0)
170
+ google-protobuf (>= 3.18, < 5.a)
171
+ googleapis-common-protos (~> 1.4)
172
+ grpc (~> 1.41)
173
+ i18n (1.15.2)
174
+ concurrent-ruby (~> 1.0)
175
+ io-console (0.9.4)
176
+ irb (1.18.0)
177
+ pp (>= 0.6.0)
178
+ prism (>= 1.3.0)
179
+ rdoc (>= 4.0.0)
180
+ reline (>= 0.4.2)
181
+ json (3.1.0)
182
+ jwt (3.3.0)
183
+ base64
184
+ language_server-protocol (3.17.0.6)
185
+ lint_roller (1.1.0)
186
+ logger (1.7.0)
187
+ method_source (1.1.0)
188
+ minitest (5.27.0)
189
+ minitest-autotest (1.2.0)
190
+ minitest-server (~> 1.0)
191
+ path_expander (~> 2.0)
192
+ minitest-focus (1.4.1)
193
+ minitest (> 5.0)
194
+ minitest-rg (5.4.0)
195
+ minitest (>= 5.0, < 7)
196
+ minitest-server (1.0.10)
197
+ drb (~> 2.0)
198
+ minitest (~> 5.16)
199
+ multi_json (1.21.2)
200
+ mustermann (3.1.1)
201
+ mutex_m (0.3.0)
202
+ net-http (0.10.0)
203
+ net-protocol (>= 0.3.0)
204
+ uri (>= 0.11.1)
205
+ net-protocol (0.4.0)
206
+ timeout
207
+ os (1.1.4)
208
+ ostruct (0.6.3)
209
+ parallel (2.3.0)
210
+ parser (3.3.12.0)
211
+ ast (~> 2.4.1)
212
+ racc
213
+ path_expander (2.0.1)
214
+ pp (0.6.4)
215
+ prettyprint
216
+ prettyprint (0.2.1)
217
+ prism (1.9.0)
218
+ pry (0.16.0)
219
+ coderay (~> 1.1)
220
+ method_source (~> 1.0)
221
+ reline (>= 0.6.0)
222
+ pry-byebug (3.12.0)
223
+ byebug (~> 13.0)
224
+ pry (>= 0.13, < 0.17)
225
+ pstore (0.2.1)
226
+ public_suffix (7.0.5)
227
+ racc (1.8.1)
228
+ rack (3.2.7)
229
+ rack-protection (4.2.1)
230
+ base64 (>= 0.1.0)
231
+ logger (>= 1.6.0)
232
+ rack (>= 3.0.0, < 4)
233
+ rack-session (2.1.2)
234
+ base64 (>= 0.1.0)
235
+ rack (>= 3.0.0)
236
+ rainbow (3.1.1)
237
+ rake (13.4.2)
238
+ rbs (4.2.0)
239
+ logger
240
+ prism (>= 1.6.0)
241
+ tsort
242
+ rdoc (8.1.0)
243
+ erb
244
+ prism (>= 1.6.0)
245
+ rbs (>= 4.0.0)
246
+ tsort
247
+ readline (0.0.4)
248
+ reline
249
+ redcarpet (3.6.1)
250
+ regexp_parser (2.13.1)
251
+ reline (0.7.0)
252
+ io-console (~> 0.5)
253
+ rubocop (1.92.0)
254
+ json (>= 2.3)
255
+ language_server-protocol (~> 3.17.0.2)
256
+ lint_roller (~> 1.1.0)
257
+ parallel (>= 1.10)
258
+ parser (>= 3.3.0.2)
259
+ rainbow (>= 2.2.2, < 4.0)
260
+ regexp_parser (>= 2.11.3, < 3.0)
261
+ rubocop-ast (>= 1.49.0, < 2.0)
262
+ ruby-progressbar (~> 1.7)
263
+ unicode-display_width (>= 2.4.0, < 4.0)
264
+ rubocop-ast (1.50.0)
265
+ parser (>= 3.3.7.2)
266
+ prism (~> 1.7)
267
+ ruby-progressbar (1.13.0)
268
+ securerandom (0.4.1)
269
+ signet (0.22.1)
270
+ addressable (~> 2.8)
271
+ faraday (>= 0.17.5, < 3.a)
272
+ jwt (>= 1.5, < 4.0)
273
+ simplecov (0.22.0)
274
+ docile (~> 1.1)
275
+ simplecov-html (~> 0.11)
276
+ simplecov_json_formatter (~> 0.1)
277
+ simplecov-html (0.13.2)
278
+ simplecov_json_formatter (0.1.4)
279
+ sinatra (4.2.1)
280
+ logger (>= 1.6.0)
281
+ mustermann (~> 3.0)
282
+ rack (>= 3.0.0, < 4)
283
+ rack-protection (= 4.2.1)
284
+ rack-session (>= 2.0.0, < 3)
285
+ tilt (~> 2.0)
286
+ sinatra-activerecord (2.0.28)
287
+ activerecord (>= 4.1)
288
+ sinatra (>= 1.0)
289
+ sqlite3 (2.10.1-aarch64-linux-gnu)
290
+ sqlite3 (2.10.1-aarch64-linux-musl)
291
+ sqlite3 (2.10.1-arm-linux-gnu)
292
+ sqlite3 (2.10.1-arm-linux-musl)
293
+ sqlite3 (2.10.1-arm64-darwin)
294
+ sqlite3 (2.10.1-x86-linux-gnu)
295
+ sqlite3 (2.10.1-x86-linux-musl)
296
+ sqlite3 (2.10.1-x86_64-darwin)
297
+ sqlite3 (2.10.1-x86_64-linux-gnu)
298
+ sqlite3 (2.10.1-x86_64-linux-musl)
299
+ thor (1.5.0)
300
+ tilt (2.9.0)
301
+ timeout (0.6.1)
302
+ tsort (0.2.0)
303
+ tzinfo (2.0.6)
304
+ concurrent-ruby (~> 1.0)
305
+ unicode-display_width (3.3.0)
306
+ unicode-emoji (~> 4.3)
307
+ unicode-emoji (4.3.0)
308
+ uri (1.1.2)
309
+ yard (0.9.45)
310
+ yard-doctest (0.1.17)
311
+ minitest
312
+ yard
313
+
314
+ PLATFORMS
315
+ aarch64-linux-gnu
316
+ aarch64-linux-musl
317
+ arm-linux-gnu
318
+ arm-linux-musl
319
+ arm64-darwin
320
+ x86-linux-gnu
321
+ x86-linux-musl
322
+ x86_64-darwin
323
+ x86_64-linux-gnu
324
+ x86_64-linux-musl
325
+
326
+ DEPENDENCIES
327
+ activerecord (~> 7.1.0)
328
+ activerecord-spanner-adapter!
329
+ appraisal (~> 2.5)
330
+ autotest-suffix (~> 1.1)
331
+ bundler (>= 2.0, < 5.0)
332
+ docker-api
333
+ google-style (~> 1.32.0)
334
+ irb
335
+ minitest (~> 5.27.0)
336
+ minitest-autotest (~> 1.0)
337
+ minitest-focus (~> 1.1)
338
+ minitest-rg (~> 5.4.0)
339
+ mutex_m
340
+ ostruct
341
+ pry (~> 0.16.0)
342
+ pry-byebug (~> 3.12.0)
343
+ rake (~> 13.0)
344
+ readline
345
+ redcarpet (~> 3.0)
346
+ simplecov (~> 0.9)
347
+ sinatra-activerecord
348
+ sqlite3
349
+ yard (~> 0.9)
350
+ yard-doctest (~> 0.1.13)
351
+
352
+ CHECKSUMS
353
+ activemodel (7.1.6) sha256=f72f510018a560b5969e3ffc88214441ff09eed60b310feba678a597b2a2e721
354
+ activerecord (7.1.6) sha256=1aa298cd7fc97ed8639ebb05a46bd17243a1218d89945bdc2bac1e61e673f079
355
+ activerecord-spanner-adapter (2.7.1)
356
+ activesupport (7.1.6) sha256=7f12140a813b1c4922a322663e547129aef1840fc512fa262378f6d7e7fd3a7c
357
+ addressable (2.9.0) sha256=7fdf6ac3660f7f4e867a0838be3f6cf722ace541dd97767fa42bc6cfa980c7af
358
+ appraisal (2.5.0) sha256=36989221be127913b0dba8d114da2001e6b2dceea7bd4951200eaba764eed3ce
359
+ ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
360
+ autotest-suffix (1.1.0) sha256=9bb29331b7b66a9659b01ef10839bd61fc1a6e95477c8ea710bd01e10c380977
361
+ base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
362
+ benchmark (0.5.0) sha256=465df122341aedcb81a2a24b4d3bd19b6c67c1530713fd533f3ff034e419236c
363
+ bigdecimal (3.3.1) sha256=eaa01e228be54c4f9f53bf3cc34fe3d5e845c31963e7fcc5bedb05a4e7d52218
364
+ byebug (13.0.0) sha256=d2263efe751941ca520fa29744b71972d39cbc41839496706f5d9b22e92ae05d
365
+ coderay (1.1.3) sha256=dc530018a4684512f8f38143cd2a096c9f02a1fc2459edcfe534787a7fc77d4b
366
+ concurrent-ruby (1.3.8) sha256=b2f1be836e968ccc78ccfce277ea79c72a88633f22306782c16ff23fb415d1e1
367
+ connection_pool (3.0.2) sha256=33fff5ba71a12d2aa26cb72b1db8bba2a1a01823559fb01d29eb74c286e62e0a
368
+ docile (1.4.1) sha256=96159be799bfa73cdb721b840e9802126e4e03dfc26863db73647204c727f21e
369
+ docker-api (2.4.0) sha256=824be734f4cc8718189be9c8e795b6414acbbf7e8b082a06f959a27dd8dd63e6
370
+ drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373
371
+ erb (6.0.7) sha256=c5ca6dc25b0ef974a44dc8f59fe847577122483b1968a38dec305c60bf91ee92
372
+ excon (1.7.3) sha256=ea13fabcab2b5f5bb64e2952a0ac018bf9882832fe7a58206630be18ba888fa9
373
+ faraday (2.15.0) sha256=3be0eff0187ed913a1b4f679e9fcfe845b542cdd4f75b76cd6181a4ae1335fff
374
+ faraday-net_http (3.5.0) sha256=2e7094c34e38754ee048cc3df47376f8657005d9375f8473bce1c3b526a22e36
375
+ faraday-retry (2.4.0) sha256=7b79c48fb7e56526faf247b12d94a680071ff40c9fda7cf1ec1549439ad11ebe
376
+ gapic-common (1.5.1) sha256=bba5d3707c72bf95b00a2c1c6f7bcee5a701d7c221dfd3a024a8f63f15b43502
377
+ google-cloud-core (1.9.0) sha256=ab55409f51488e8deefb6edcc1ce4771dfb5da2fe7b3bc075709a030c2b682a4
378
+ google-cloud-env (2.4.1) sha256=987cc58afc50ce2903128ab4dcd442159be4457246b8137e41d49d5c3fc590dd
379
+ google-cloud-errors (1.7.0) sha256=6e682f42d89aae08689f36f28495de629d756da076bafff0003bac7f8042ebb3
380
+ google-cloud-spanner (2.36.1) sha256=d32b0d21660fad4d4faf0a62f1c6e292df7d4bdbe1522c21e3861fbc74606edd
381
+ google-cloud-spanner-admin-database-v1 (1.6.1) sha256=6b8758e4def80d69e9ee64a42078d3a59ab028a638f7a849abd8130cf85add9b
382
+ google-cloud-spanner-admin-instance-v1 (1.6.0) sha256=1775b56518665854b27af393378761e6ff9b12156d746168df7bb14ce0138d54
383
+ google-cloud-spanner-v1 (1.19.2) sha256=f1de64f97967208dffd48e4b3673a00c6e79464e9a1c2f8ddc6684ab492a854e
384
+ google-logging-utils (0.2.1) sha256=73945c3ac6800eba802c26b1744765d5057cc4d89182c7255ee1347b0ca96dc7
385
+ google-protobuf (4.36.2) sha256=2f8daff50ae14aad36ab0ccdcf284065fa71d726c444efe114e6db82ffe62494
386
+ google-protobuf (4.36.2-aarch64-linux-gnu) sha256=c3279ec6eaa59f6ed6276eda2a33cffb4306471183ab79a332e698b8564f5169
387
+ google-protobuf (4.36.2-aarch64-linux-musl) sha256=0772c9dde1e6dce9a6b44d1d35c28c29adee99d9bd6aff5e21840daeb22161ce
388
+ google-protobuf (4.36.2-arm64-darwin) sha256=f70d810e6bbab9d8ad9c1d5fd685a21de4c10ad3ad32efb9455e17e5b1286917
389
+ google-protobuf (4.36.2-x86-linux-gnu) sha256=ffcd06d49bffca24afff18c900dd61a51ea3028d43c47d0d9621d00bf38a5866
390
+ google-protobuf (4.36.2-x86-linux-musl) sha256=e1afec03babd73c9117cc09d5fc2a98dfef37a414bfd8a4d0ceaac7bd66fc028
391
+ google-protobuf (4.36.2-x86_64-darwin) sha256=8d1bd2a344f7f589703b202ad2ee4cca8ef731b4ced45782ef92d385967384ba
392
+ google-protobuf (4.36.2-x86_64-linux-gnu) sha256=d25a820873e423f1d209ae8c672a4a28b019e2429debd0901d26670a0b4e14db
393
+ google-protobuf (4.36.2-x86_64-linux-musl) sha256=0fa17686c896da96a60a705e56ddc7d4ff56413f52787c655bd4c9fb33ffe14f
394
+ google-style (1.32.1) sha256=715b65a1169761c131f4c08592ea7b6e73f8f8ae7217be110e937e7361f9ec6a
395
+ googleapis-common-protos (1.10.0) sha256=13e47ad0ce85d3d30065c03863efd302a82b0e08ba576f2a9b9dbbfeecb57ee0
396
+ googleapis-common-protos-types (1.23.0) sha256=992e740a523794d9fc5f29a504465d8fc737aaa16c930fe7228e3346860faf0a
397
+ googleauth (1.17.5) sha256=92498efc6883630a7e011ce4e667f887e314e588d584410ba18df49f1303f3d7
398
+ grpc (1.84.0) sha256=df2dd2d379fe3419a58af64f2fab514202437e28b7df5b441a16da542486a98f
399
+ grpc (1.84.0-aarch64-linux-gnu) sha256=38bcb6998cca338718e39e2b89785964850f71444279a033c296ceb40406cfad
400
+ grpc (1.84.0-aarch64-linux-musl) sha256=514fad5bc13ed336d424ac056d21803c27f4e2feaddf9eddfc94750bae03f40b
401
+ grpc (1.84.0-arm64-darwin) sha256=aee56ed688f44750832fbc50c17eb1c75ce1c0d38693dc08d4f37560e1646277
402
+ grpc (1.84.0-x86-linux-gnu) sha256=f9846e8aa06f7d70b41b5ea96a7ff97dd5cce28d379788040f93eab1c0f9b52b
403
+ grpc (1.84.0-x86-linux-musl) sha256=adb35f72337bd6709e6e874e165d11096ea7015cb9ef33ed30f0a072e1bb2817
404
+ grpc (1.84.0-x86_64-darwin) sha256=deb0ba1f82af9200afd0a71301e2039306cd1a3ca3010c814fb67f57eed38642
405
+ grpc (1.84.0-x86_64-linux-gnu) sha256=3e9be3e4c4734a2a4977aa34446c604b1542a21fe67e4b7772be01602eac6bb3
406
+ grpc (1.84.0-x86_64-linux-musl) sha256=1ded8b5df0fafb16b195bf559470bf38b9a22bf74a820b892ebb931ca9f2d8ee
407
+ grpc-google-iam-v1 (1.10.0) sha256=13a4ace4f7495b913f202880a5431f7e53633af3dd6d7df8c4224bd2dac23a9a
408
+ i18n (1.15.2) sha256=00f9eb62412fe593b2a65a97daa75300d37abb8f7202ec748e94b6d46a9dd1b5
409
+ io-console (0.9.4) sha256=a403304f32928ee85e56d457b4612ca43f2703b561a3258844992bd24085fbb1
410
+ irb (1.18.0) sha256=de9454a0703a54704b9811a5ef31a60c86949fbf4013fcf244fabc7c775248e3
411
+ json (3.1.0) sha256=3ce7ccf8fde58960177a3a756c31f292a4c1e1dedee884547096a5b0604e3bd8
412
+ jwt (3.3.0) sha256=44cc34fbc341c148233cf66641522b4bce0dfb1ce55e8073f05c56f44f4ee546
413
+ language_server-protocol (3.17.0.6) sha256=5ef2c0c138f8267e1bc631d3328347d354f96724b0af22f2c79516120443b7f0
414
+ lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
415
+ logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
416
+ method_source (1.1.0) sha256=181301c9c45b731b4769bc81e8860e72f9161ad7d66dd99103c9ab84f560f5c5
417
+ minitest (5.27.0) sha256=2d3b17f8a36fe7801c1adcffdbc38233b938eb0b4966e97a6739055a45fa77d5
418
+ minitest-autotest (1.2.0) sha256=60d031cba705215450662b0060f03f96507682b346a19c27f6756751ad92d2b4
419
+ minitest-focus (1.4.1) sha256=394517cbe2dcb2d992d8ffc41a3b2b6315777a4daa69239de4fefe7110dd810e
420
+ minitest-rg (5.4.0) sha256=54d42bb8ce876381245be5866f3c1dd704ef79c06ba5c9ff280c0aa28c56effb
421
+ minitest-server (1.0.10) sha256=275439bf3ffc433fcbe161733248f1d9749ebf122892cf010bf864aaa95cef75
422
+ multi_json (1.21.2) sha256=245531eaf54bdba57aba515ff08b4503505c5e09911daa89c5a561e2f85bea8e
423
+ mustermann (3.1.1) sha256=4c6170c7234d5499c345562ba7c7dfe73e1754286dcc1abb053064d66a127198
424
+ mutex_m (0.3.0) sha256=cfcb04ac16b69c4813777022fdceda24e9f798e48092a2b817eb4c0a782b0751
425
+ net-http (0.10.0) sha256=1a2ff6e37a05724973c43f2bf7bf105f59c36a4cd0a7e9b1c021a0a566987c27
426
+ net-protocol (0.4.0) sha256=f9f90c8c6f64794a45160bf422177a336db12809de3beeeaa26b88fcd2e8c853
427
+ os (1.1.4) sha256=57816d6a334e7bd6aed048f4b0308226c5fb027433b67d90a9ab435f35108d3f
428
+ ostruct (0.6.3) sha256=95a2ed4a4bd1d190784e666b47b2d3f078e4a9efda2fccf18f84ddc6538ed912
429
+ parallel (2.3.0) sha256=f75a3e904101ce6a1ccb6b8dc800cbafd42166d83330192438dcf29395167a6f
430
+ parser (3.3.12.0) sha256=21a6d7f755d5a24dfbdc6e6b772e4e879a52e7631a88bc5a3a134606052c9828
431
+ path_expander (2.0.1) sha256=2de201164bff4719cc4d0b3767286e9977cc832a59c4d70abab571ec86cb41e4
432
+ pp (0.6.4) sha256=dfcb0fce700c41456265922884f9fe195d7fbb0674a3578e6c0f69588e82b570
433
+ prettyprint (0.2.1) sha256=d555d57ea6d7cf001d4774b693546a6bd88bec1e778ddffb5c60b68ceec4b7d4
434
+ prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
435
+ pry (0.16.0) sha256=d76c69065698ed1f85e717bd33d7942c38a50868f6b0673c636192b3d1b6054e
436
+ pry-byebug (3.12.0) sha256=594e094ae8a8390a7ad4c7b36ae36e13304ed02664c67417d108dc5f7213d1b7
437
+ pstore (0.2.1) sha256=03904d0f2c66579e96d1e6704cdabc0c88df7ea8ed8782d9f3569f6f6c702c1a
438
+ public_suffix (7.0.5) sha256=1a8bb08f1bbea19228d3bed6e5ed908d1cb4f7c2726d18bd9cadf60bc676f623
439
+ racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
440
+ rack (3.2.7) sha256=93e13e1c24f93556671d85d2d79fa228c3485815c50d7e2f265b5330c6528fb7
441
+ rack-protection (4.2.1) sha256=cf6e2842df8c55f5e4d1a4be015e603e19e9bc3a7178bae58949ccbb58558bac
442
+ rack-session (2.1.2) sha256=595434f8c0c3473ae7d7ac56ecda6cc6dfd9d37c0b2b5255330aa1576967ffe8
443
+ rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
444
+ rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701
445
+ rbs (4.2.0) sha256=51f7b886dcc05bc09e10b901daa6a81829f6adc03101d6ca9ea4aac6103e0674
446
+ rdoc (8.1.0) sha256=befc37880a5cfd36dcb176c748b5fd5ee39dd3536a75e81824e4972ce230f60a
447
+ readline (0.0.4) sha256=6138eef17be2b98298b672c3ea63bf9cb5158d401324f26e1e84f235879c1d6a
448
+ redcarpet (3.6.1) sha256=d444910e6aa55480c6bcdc0cdb057626e8a32c054c29e793fa642ba2f155f445
449
+ regexp_parser (2.13.1) sha256=5aedb6b7c35688f51e86eef17a15374dfd287c83f4ca644b2c5f3ec50a33b44b
450
+ reline (0.7.0) sha256=5b012d8e55dbf9d450f12bde2cf7d15ff546ae80b3f8f3b30e570d431815583d
451
+ rubocop (1.92.0) sha256=2af68041fb2e70bd9321d0479b49fad07f8008a3d0758c83347b4917128c56e0
452
+ rubocop-ast (1.50.0) sha256=b9ca88300da0803ee222ad20cdb30494c0a784eed06fdc35d254b06d662788db
453
+ ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
454
+ securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1
455
+ signet (0.22.1) sha256=6e73e9f2bdc2f038a5fdc8a89d248792b1b55e9ca50ee1ba458d8f1d9f0a2151
456
+ simplecov (0.22.0) sha256=fe2622c7834ff23b98066bb0a854284b2729a569ac659f82621fc22ef36213a5
457
+ simplecov-html (0.13.2) sha256=bd0b8e54e7c2d7685927e8d6286466359b6f16b18cb0df47b508e8d73c777246
458
+ simplecov_json_formatter (0.1.4) sha256=529418fbe8de1713ac2b2d612aa3daa56d316975d307244399fa4838c601b428
459
+ sinatra (4.2.1) sha256=b7aeb9b11d046b552972ade834f1f9be98b185fa8444480688e3627625377080
460
+ sinatra-activerecord (2.0.28) sha256=99f352c2dfa244d02b4f877efbe00135360b758390b8bb7bc2d4d91171c93811
461
+ sqlite3 (2.10.1-aarch64-linux-gnu) sha256=48390cc2b809acd1280f5c9daaf3c2013833adb8a5ece9b0634f708651080ccd
462
+ sqlite3 (2.10.1-aarch64-linux-musl) sha256=db1bcddf98e4eeea80ca896f56aa3f9468364fa1ee8e042ddc6b628b5092fabb
463
+ sqlite3 (2.10.1-arm-linux-gnu) sha256=34a67a3fe84f705a0fad6f7aa4541579300644b9acdf414797e59929a6e3528b
464
+ sqlite3 (2.10.1-arm-linux-musl) sha256=e317adb8979b57dafd999b54410b4050296aa5d00caa664e3f75d876e2ae90e8
465
+ sqlite3 (2.10.1-arm64-darwin) sha256=45f74dad0a8ee57ae5fadfac39bf160d1f09fb0484a442223310d869cd957d92
466
+ sqlite3 (2.10.1-x86-linux-gnu) sha256=7b3f9eff7c5c26551800649312796203ded8a505bcdaf30cd915dd9ae5e9575c
467
+ sqlite3 (2.10.1-x86-linux-musl) sha256=8f193eb1b4a66156baaaedafac0de091533cf840f4b78cf3fa2019cde0388f10
468
+ sqlite3 (2.10.1-x86_64-darwin) sha256=00d1cd2e8ecff5ad9fffa0c97de59d4f85c5fc54eada2587d53ca0bd933b7a5d
469
+ sqlite3 (2.10.1-x86_64-linux-gnu) sha256=661ecede31e23a412059cd8c684ed84e332f64f167e4a90902cf99e8ea2c8718
470
+ sqlite3 (2.10.1-x86_64-linux-musl) sha256=67c7c5443a930157b4e148f0f4cb9ab998ee7ecfa8ce56879a6b56d1d742b2be
471
+ thor (1.5.0) sha256=e3a9e55fe857e44859ce104a84675ab6e8cd59c650a49106a05f55f136425e73
472
+ tilt (2.9.0) sha256=da5735d0280bba96e9a91041bb14aee435ccad5c17b0fa519249ae543d9aa3a5
473
+ timeout (0.6.1) sha256=78f57368a7e7bbadec56971f78a3f5ecbcfb59b7fcbb0a3ed6ddc08a5094accb
474
+ tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f
475
+ tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b
476
+ unicode-display_width (3.3.0) sha256=4b7aa66a4b11db50f6f7e98411215cd0dd10eaecb665d36eec5bcacb3fa0b613
477
+ unicode-emoji (4.3.0) sha256=11c02fa73290378c066bb0562cd4c87d8e1b706fbbe0059ca12746a4244de8ce
478
+ uri (1.1.2) sha256=89292e98eabbef6248b0a0ed5e7e398e152f83f17560023a6d94a7f492b169fb
479
+ yard (0.9.45) sha256=52e211493f7cb8a3ebf7e104a25a1e73937a3103092545d34cb88fafebb3dc51
480
+ yard-doctest (0.1.17) sha256=7cb35a75d99f58fc42ee72d3542a36e227237b621a40aebc391c95988b72847f
481
+
482
+ BUNDLED WITH
483
+ 2.6.9
data/README.md CHANGED
@@ -115,3 +115,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
115
115
  ## Code of Conduct
116
116
 
117
117
  Everyone interacting in the Activerecord::Spanner project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/googleapis/ruby-spanner-activerecord/blob/main/CODE_OF_CONDUCT.md).
118
+
@@ -86,25 +86,15 @@ module ActiveRecord
86
86
 
87
87
  def test_index_exists
88
88
  with_change_table do |t|
89
- if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3") && ActiveRecord::gem_version <= Gem::Version.create('7.0.4')
90
- @connection.expect :index_exists?, nil, [:delete_me, :bar, {}]
91
- t.index_exists?(:bar, {})
92
- else
93
- @connection.expect :index_exists?, nil, [:delete_me, :bar]
94
- t.index_exists?(:bar)
95
- end
89
+ @connection.expect :index_exists?, nil, [:delete_me, :bar]
90
+ t.index_exists?(:bar)
96
91
  end
97
92
  end
98
93
 
99
94
  def test_index_exists_with_options
100
95
  with_change_table do |t|
101
- if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3") && ActiveRecord::gem_version <= Gem::Version.create('7.0.4')
102
- @connection.expect :index_exists?, nil, [:delete_me, :bar, {unique: true}]
103
- t.index_exists?(:bar, {unique: true})
104
- else
105
- @connection.expect :index_exists?, nil, [:delete_me, :bar], unique: true
106
- t.index_exists?(:bar, unique: true)
107
- end
96
+ @connection.expect :index_exists?, nil, [:delete_me, :bar], unique: true
97
+ t.index_exists?(:bar, unique: true)
108
98
  end
109
99
  end
110
100
 
@@ -76,37 +76,23 @@ module ActiveRecord
76
76
  end
77
77
  end
78
78
 
79
- VERSION_7 = ActiveRecord.gem_version >= Gem::Version.create("7.0.0")
80
-
81
- def assert_raises_below_ar_7(ex, &test)
82
- if VERSION_7
83
- assert_nothing_raised &test
84
- else
85
- assert_raises ex, &test
86
- end
87
- end
88
-
89
79
  def test_create_with_value_for_generated_column
90
80
  # Note: The statement itself will not fail for an explicit transaction that uses buffered transactions.
91
81
  # Instead, the commit will fail. That is tested in a separate test case.
92
82
  [nil, :serializable].each do |isolation|
93
83
  run_in_transaction isolation do
94
- assert_raises_below_ar_7 ActiveRecord::StatementInvalid do
95
- singer = Singer.create first_name: "Pete", last_name: "Allison", full_name: "Alice Peterson"
96
- assert_equal "Pete Allison", singer.reload.full_name
97
- end
84
+ singer = Singer.create first_name: "Pete", last_name: "Allison", full_name: "Alice Peterson"
85
+ assert_equal "Pete Allison", singer.reload.full_name
98
86
  end
99
87
  end
100
88
  end
101
89
 
102
90
  def test_create_with_value_for_generated_column_buffered_mutations
103
91
  # The transaction itself will raise an error, as the failure occurs during the commit.
104
- assert_raises_below_ar_7 ActiveRecord::StatementInvalid do
105
- singer = run_in_transaction :buffered_mutations do
106
- Singer.create first_name: "Pete", last_name: "Allison", full_name: "Alice Peterson"
107
- end
108
- assert_equal "Pete Allison", singer.reload.full_name
92
+ singer = run_in_transaction :buffered_mutations do
93
+ Singer.create first_name: "Pete", last_name: "Allison", full_name: "Alice Peterson"
109
94
  end
95
+ assert_equal "Pete Allison", singer.reload.full_name
110
96
  end
111
97
 
112
98
  def test_update_with_value_for_generated_column
@@ -116,9 +102,7 @@ module ActiveRecord
116
102
  singer = Singer.create first_name: "Pete", last_name: "Allison"
117
103
  singer.reload # reload to ensure the full_name attribute is populated.
118
104
  run_in_transaction isolation do
119
- assert_raises_below_ar_7 ActiveRecord::StatementInvalid do
120
- Singer.update full_name: "Alice Peterson"
121
- end
105
+ Singer.update full_name: "Alice Peterson"
122
106
  end
123
107
  assert_equal "Pete Allison", singer.reload.full_name
124
108
  end
@@ -128,10 +112,8 @@ module ActiveRecord
128
112
  singer = Singer.create first_name: "Pete", last_name: "Allison"
129
113
  singer.reload # reload to ensure the full_name attribute is populated.
130
114
  # The transaction itself will raise an error, as the failure occurs during the commit.
131
- assert_raises_below_ar_7 ActiveRecord::StatementInvalid do
132
- run_in_transaction :buffered_mutations do
133
- Singer.update full_name: "Alice Peterson"
134
- end
115
+ run_in_transaction :buffered_mutations do
116
+ Singer.update full_name: "Alice Peterson"
135
117
  end
136
118
  assert_equal "Pete Allison", singer.reload.full_name
137
119
  end
@@ -17,7 +17,6 @@ require "active_support/testing/stream"
17
17
  require "activerecord-spanner-adapter"
18
18
  require "active_record/connection_adapters/spanner_adapter"
19
19
  require "securerandom"
20
- require "composite_primary_keys" if ActiveRecord::gem_version < Gem::Version.create('7.1.0')
21
20
 
22
21
  # rubocop:disable Style/GlobalVars
23
22
  #
@@ -27,27 +26,16 @@ end
27
26
  $spanner_test_database = "ar-test-#{SecureRandom.hex 4}"
28
27
 
29
28
  def connector_config
30
- if ActiveRecord.gem_version >= Gem::Version.create("7.1.0")
31
- {
32
- "adapter" => "spanner",
33
- "emulator_host" => ENV["SPANNER_EMULATOR_HOST"],
34
- "project" => ENV["SPANNER_TEST_PROJECT"],
35
- "instance" => ENV["SPANNER_TEST_INSTANCE"],
36
- "credentials" => ENV["SPANNER_TEST_KEYFILE"],
37
- "database" => $spanner_test_database,
38
- "default_sequence_kind" => "BIT_REVERSED_POSITIVE",
39
- "use_client_side_id_for_mutations" => true,
40
- }
41
- else
42
- {
43
- "adapter" => "spanner",
44
- "emulator_host" => ENV["SPANNER_EMULATOR_HOST"],
45
- "project" => ENV["SPANNER_TEST_PROJECT"],
46
- "instance" => ENV["SPANNER_TEST_INSTANCE"],
47
- "credentials" => ENV["SPANNER_TEST_KEYFILE"],
48
- "database" => $spanner_test_database,
49
- }
50
- end
29
+ {
30
+ "adapter" => "spanner",
31
+ "emulator_host" => ENV["SPANNER_EMULATOR_HOST"],
32
+ "project" => ENV["SPANNER_TEST_PROJECT"],
33
+ "instance" => ENV["SPANNER_TEST_INSTANCE"],
34
+ "credentials" => ENV["SPANNER_TEST_KEYFILE"],
35
+ "database" => $spanner_test_database,
36
+ "default_sequence_kind" => "BIT_REVERSED_POSITIVE",
37
+ "use_client_side_id_for_mutations" => true,
38
+ }
51
39
  end
52
40
 
53
41
  def spanner
@@ -26,8 +26,9 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.add_dependency "google-cloud-spanner", "~> 2.25"
28
28
  spec.add_dependency "google-cloud-spanner-v1", "~> 1.7"
29
- spec.add_runtime_dependency "activerecord", [">= 7.0", "< 9"]
29
+ spec.add_runtime_dependency "activerecord", [">= 7.1", "< 9"]
30
30
 
31
+ spec.add_development_dependency "appraisal", "~> 2.5"
31
32
  spec.add_development_dependency "autotest-suffix", "~> 1.1"
32
33
  spec.add_development_dependency "bundler", [">= 2.0", "< 5.0"]
33
34
  spec.add_development_dependency "google-style", "~> 1.32.0"
@@ -4,7 +4,7 @@
4
4
  # license that can be found in the LICENSE file or at
5
5
  # https://opensource.org/licenses/MIT.
6
6
 
7
- class CreateTables < ActiveRecord::Migration[6.0]
7
+ class CreateTables < ActiveRecord::Migration[7.1]
8
8
  def change
9
9
  connection.ddl_batch do
10
10
  create_table :singers do |t|
@@ -55,7 +55,7 @@ If you are not familiar with Active Record, you can read more about it on [Ruby
55
55
  ruby --version
56
56
  rails --version
57
57
  ```
58
- The versions should be Ruby 2.6 or higher and Rails 6.0 or higher.
58
+ The versions should be Ruby 3.2 or higher and Rails 7.1 or higher.
59
59
  1. Create a new Rails project:
60
60
 
61
61
  ```shell