activerecord-spanner-adapter 1.6.3 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/acceptance-tests-on-emulator.yaml +3 -7
  3. data/.github/workflows/acceptance-tests-on-production.yaml +1 -1
  4. data/.github/workflows/ci.yaml +3 -7
  5. data/.github/workflows/nightly-acceptance-tests-on-emulator.yaml +4 -33
  6. data/.github/workflows/nightly-acceptance-tests-on-production.yaml +1 -1
  7. data/.github/workflows/nightly-unit-tests.yaml +5 -33
  8. data/.github/workflows/rubocop.yaml +1 -1
  9. data/.github/workflows/samples.yaml +30 -0
  10. data/.kokoro/populate-secrets.sh +5 -1
  11. data/.kokoro/release.cfg +22 -12
  12. data/.kokoro/release.sh +1 -3
  13. data/.kokoro/trampoline_v2.sh +19 -11
  14. data/.release-please-manifest.json +1 -1
  15. data/.rubocop.yml +2 -2
  16. data/.trampolinerc +6 -1
  17. data/CHANGELOG.md +37 -0
  18. data/Gemfile +7 -5
  19. data/README.md +11 -9
  20. data/Rakefile +2 -2
  21. data/acceptance/cases/migration/command_recorder_test.rb +7 -38
  22. data/acceptance/cases/migration/references_index_test.rb +2 -11
  23. data/acceptance/cases/migration/schema_dumper_test.rb +21 -9
  24. data/acceptance/cases/models/binary_identifiers.rb +97 -0
  25. data/acceptance/cases/models/insert_all_test.rb +22 -7
  26. data/acceptance/cases/sessions/session_not_found_test.rb +2 -0
  27. data/acceptance/cases/tasks/database_tasks_test.rb +1 -0
  28. data/acceptance/models/binary_project.rb +20 -0
  29. data/acceptance/models/string_io.rb +28 -0
  30. data/acceptance/models/user.rb +20 -0
  31. data/acceptance/test_helper.rb +6 -1
  32. data/activerecord-spanner-adapter.gemspec +3 -3
  33. data/benchmarks/application.rb +3 -7
  34. data/examples/snippets/Rakefile +27 -5
  35. data/examples/snippets/array-data-type/application.rb +1 -5
  36. data/examples/snippets/array-data-type/config/database.yml +1 -0
  37. data/examples/snippets/bit-reversed-sequence/application.rb +0 -4
  38. data/examples/snippets/bit-reversed-sequence/config/database.yml +1 -0
  39. data/examples/snippets/bit-reversed-sequence/db/seeds.rb +2 -2
  40. data/examples/snippets/bulk-insert/application.rb +1 -5
  41. data/examples/snippets/bulk-insert/config/database.yml +1 -0
  42. data/examples/snippets/commit-timestamp/application.rb +0 -4
  43. data/examples/snippets/commit-timestamp/config/database.yml +1 -0
  44. data/examples/snippets/config/environment.rb +5 -0
  45. data/examples/snippets/create-records/application.rb +1 -5
  46. data/examples/snippets/create-records/config/database.yml +1 -0
  47. data/examples/snippets/date-data-type/application.rb +1 -5
  48. data/examples/snippets/date-data-type/config/database.yml +1 -0
  49. data/examples/snippets/date-data-type/db/seeds.rb +1 -1
  50. data/examples/snippets/generated-column/application.rb +0 -4
  51. data/examples/snippets/generated-column/config/database.yml +1 -0
  52. data/examples/snippets/generated-column/db/seeds.rb +1 -1
  53. data/examples/snippets/hints/application.rb +0 -4
  54. data/examples/snippets/hints/config/database.yml +1 -0
  55. data/examples/snippets/hints/db/seeds.rb +1 -1
  56. data/examples/snippets/interleaved-tables/application.rb +1 -5
  57. data/examples/snippets/interleaved-tables/config/database.yml +1 -0
  58. data/examples/snippets/interleaved-tables/db/seeds.rb +1 -1
  59. data/examples/snippets/interleaved-tables/models/album.rb +6 -2
  60. data/examples/snippets/interleaved-tables/models/track.rb +5 -1
  61. data/examples/snippets/interleaved-tables-before-7.1/application.rb +1 -5
  62. data/examples/snippets/interleaved-tables-before-7.1/config/database.yml +1 -0
  63. data/examples/snippets/interleaved-tables-before-7.1/db/seeds.rb +1 -1
  64. data/examples/snippets/migrations/application.rb +0 -4
  65. data/examples/snippets/migrations/config/database.yml +1 -0
  66. data/examples/snippets/mutations/application.rb +1 -5
  67. data/examples/snippets/mutations/config/database.yml +1 -0
  68. data/examples/snippets/mutations/db/seeds.rb +1 -1
  69. data/examples/snippets/optimistic-locking/application.rb +0 -4
  70. data/examples/snippets/optimistic-locking/config/database.yml +1 -0
  71. data/examples/snippets/optimistic-locking/db/seeds.rb +1 -1
  72. data/examples/snippets/partitioned-dml/application.rb +0 -4
  73. data/examples/snippets/partitioned-dml/config/database.yml +1 -0
  74. data/examples/snippets/partitioned-dml/db/seeds.rb +1 -1
  75. data/examples/snippets/query-logs/application.rb +15 -13
  76. data/examples/snippets/query-logs/config/database.yml +1 -0
  77. data/examples/snippets/query-logs/db/seeds.rb +1 -1
  78. data/examples/snippets/quickstart/application.rb +0 -4
  79. data/examples/snippets/quickstart/config/database.yml +1 -0
  80. data/examples/snippets/quickstart/db/seeds.rb +1 -1
  81. data/examples/snippets/read-only-transactions/application.rb +0 -4
  82. data/examples/snippets/read-only-transactions/config/database.yml +1 -0
  83. data/examples/snippets/read-only-transactions/db/seeds.rb +1 -1
  84. data/examples/snippets/read-write-transactions/application.rb +2 -6
  85. data/examples/snippets/read-write-transactions/config/database.yml +1 -0
  86. data/examples/snippets/read-write-transactions/db/seeds.rb +1 -1
  87. data/examples/snippets/stale-reads/application.rb +0 -4
  88. data/examples/snippets/stale-reads/config/database.yml +1 -0
  89. data/examples/snippets/stale-reads/db/seeds.rb +1 -1
  90. data/examples/snippets/tags/application.rb +0 -4
  91. data/examples/snippets/tags/config/database.yml +1 -0
  92. data/examples/snippets/tags/db/seeds.rb +1 -1
  93. data/examples/snippets/timestamp-data-type/application.rb +0 -4
  94. data/examples/snippets/timestamp-data-type/config/database.yml +1 -0
  95. data/lib/active_record/connection_adapters/spanner/column.rb +3 -3
  96. data/lib/active_record/connection_adapters/spanner/database_statements.rb +37 -23
  97. data/lib/active_record/connection_adapters/spanner/quoting.rb +19 -6
  98. data/lib/active_record/connection_adapters/spanner/schema_creation.rb +7 -9
  99. data/lib/active_record/connection_adapters/spanner/schema_definitions.rb +12 -2
  100. data/lib/active_record/connection_adapters/spanner/schema_statements.rb +28 -46
  101. data/lib/active_record/connection_adapters/spanner/type_metadata.rb +4 -6
  102. data/lib/active_record/connection_adapters/spanner_adapter.rb +54 -27
  103. data/lib/active_record/tasks/spanner_database_tasks.rb +4 -4
  104. data/lib/active_record/type/spanner/array.rb +4 -0
  105. data/lib/active_record/type/spanner/bytes.rb +10 -0
  106. data/lib/activerecord-spanner-adapter.rb +5 -1
  107. data/lib/activerecord_spanner_adapter/base.rb +58 -30
  108. data/lib/activerecord_spanner_adapter/connection.rb +9 -5
  109. data/lib/activerecord_spanner_adapter/foreign_key.rb +9 -2
  110. data/lib/activerecord_spanner_adapter/index/column.rb +6 -1
  111. data/lib/activerecord_spanner_adapter/index.rb +10 -2
  112. data/lib/activerecord_spanner_adapter/information_schema.rb +1 -1
  113. data/lib/activerecord_spanner_adapter/primary_key.rb +2 -2
  114. data/lib/activerecord_spanner_adapter/table/column.rb +12 -3
  115. data/lib/activerecord_spanner_adapter/table.rb +8 -2
  116. data/lib/activerecord_spanner_adapter/transaction.rb +1 -1
  117. data/lib/activerecord_spanner_adapter/version.rb +1 -1
  118. data/lib/arel/visitors/spanner.rb +16 -11
  119. data/lib/spanner_client_ext.rb +4 -3
  120. metadata +15 -34
  121. data/examples/snippets/array-data-type/db/schema.rb +0 -31
  122. data/examples/snippets/bit-reversed-sequence/db/schema.rb +0 -31
  123. data/examples/snippets/bulk-insert/db/schema.rb +0 -31
  124. data/examples/snippets/commit-timestamp/db/schema.rb +0 -34
  125. data/examples/snippets/create-records/db/schema.rb +0 -31
  126. data/examples/snippets/date-data-type/db/schema.rb +0 -26
  127. data/examples/snippets/generated-column/db/schema.rb +0 -26
  128. data/examples/snippets/hints/db/schema.rb +0 -33
  129. data/examples/snippets/interleaved-tables/db/schema.rb +0 -39
  130. data/examples/snippets/interleaved-tables-before-7.1/db/schema.rb +0 -37
  131. data/examples/snippets/migrations/db/schema.rb +0 -38
  132. data/examples/snippets/mutations/db/schema.rb +0 -32
  133. data/examples/snippets/optimistic-locking/db/schema.rb +0 -34
  134. data/examples/snippets/partitioned-dml/db/schema.rb +0 -31
  135. data/examples/snippets/query-logs/db/schema.rb +0 -31
  136. data/examples/snippets/quickstart/db/schema.rb +0 -31
  137. data/examples/snippets/read-only-transactions/db/schema.rb +0 -31
  138. data/examples/snippets/read-write-transactions/db/schema.rb +0 -32
  139. data/examples/snippets/stale-reads/db/schema.rb +0 -31
  140. data/examples/snippets/tags/db/schema.rb +0 -31
  141. data/examples/snippets/timestamp-data-type/db/schema.rb +0 -26
@@ -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
- require_relative "../../config/environment.rb"
7
+ require_relative "../../config/environment"
8
8
  require_relative "../models/singer"
9
9
 
10
10
  first_names = %w[Pete Alice John Ethel Trudy Naomi Wendy Ruben Thomas Elly]
@@ -37,10 +37,6 @@ class Application
37
37
  .distinct.order("last_name, first_name").each do |singer|
38
38
  puts singer.full_name
39
39
  end
40
-
41
- puts ""
42
- puts "Press any key to end the application"
43
- STDIN.getch
44
40
  end
45
41
  end
46
42
 
@@ -6,3 +6,4 @@ development:
6
6
  database: testdb
7
7
  pool: 5
8
8
  timeout: 5000
9
+ schema_dump: false
@@ -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
- require_relative "../../config/environment.rb"
7
+ require_relative "../../config/environment"
8
8
  require_relative "../models/singer"
9
9
  require_relative "../models/album"
10
10
 
@@ -13,7 +13,7 @@ require_relative "models/track"
13
13
  class Application
14
14
  def self.run
15
15
  # List all singers, albums and tracks.
16
- list_singers_albums_tracks
16
+ list_singers_albums
17
17
 
18
18
  # Create a new album with some tracks.
19
19
  create_new_album
@@ -28,10 +28,6 @@ class Application
28
28
  # Try to delete an album that has at least one track. This IS possible as tracks IS marked with
29
29
  # ON DELETE CASCADE.
30
30
  delete_album_with_tracks
31
-
32
- puts ""
33
- puts "Press any key to end the application"
34
- STDIN.getch
35
31
  end
36
32
 
37
33
  def self.find_singer
@@ -6,3 +6,4 @@ development:
6
6
  database: testdb
7
7
  pool: 5
8
8
  timeout: 5000
9
+ schema_dump: false
@@ -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
- require_relative "../../config/environment.rb"
7
+ require_relative "../../config/environment"
8
8
  require_relative "../models/singer"
9
9
  require_relative "../models/album"
10
10
  require_relative "../models/track"
@@ -11,6 +11,10 @@ class Album < ActiveRecord::Base
11
11
 
12
12
  # `tracks` is defined as INTERLEAVE IN PARENT `albums`.
13
13
  # The primary key of `albums` is (`singerid`, `albumid`).
14
- # Rails 7.1 requires using query_constraints to define a composite foreign key.
15
- has_many :tracks, query_constraints: [:singerid, :albumid]
14
+ if ActiveRecord::VERSION::MAJOR >= 8
15
+ has_many :tracks, foreign_key: [:singerid, :albumid]
16
+ else
17
+ # Rails 7.1 requires using query_constraints to define a composite foreign key.
18
+ has_many :tracks, query_constraints: [:singerid, :albumid]
19
+ end
16
20
  end
@@ -8,7 +8,11 @@ class Track < ActiveRecord::Base
8
8
  # `tracks` is defined as INTERLEAVE IN PARENT `albums`.
9
9
  # The primary key of `albums` is (`singerid`, `albumid`).
10
10
  # Rails 7.1 requires a composite primary key in a belongs_to relationship to be specified as query_constraints.
11
- belongs_to :album, query_constraints: [:singerid, :albumid]
11
+ if ActiveRecord::VERSION::MAJOR >= 8
12
+ belongs_to :album, foreign_key: [:singerid, :albumid]
13
+ else
14
+ belongs_to :album, query_constraints: [:singerid, :albumid]
15
+ end
12
16
 
13
17
  # `tracks` also has a `singerid` column that can be used to associate a Track with a Singer.
14
18
  belongs_to :singer, foreign_key: :singerid
@@ -13,7 +13,7 @@ require_relative "models/track"
13
13
  class Application
14
14
  def self.run
15
15
  # List all singers, albums and tracks.
16
- list_singers_albums_tracks
16
+ list_singers_albums
17
17
 
18
18
  # Create a new album with some tracks.
19
19
  create_new_album
@@ -28,10 +28,6 @@ class Application
28
28
  # Try to delete an album that has at least one track. This IS possible as tracks IS marked with
29
29
  # ON DELETE CASCADE.
30
30
  delete_album_with_tracks
31
-
32
- puts ""
33
- puts "Press any key to end the application"
34
- STDIN.getch
35
31
  end
36
32
 
37
33
  def self.find_singer
@@ -6,3 +6,4 @@ development:
6
6
  database: testdb
7
7
  pool: 5
8
8
  timeout: 5000
9
+ schema_dump: false
@@ -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
- require_relative "../../config/environment.rb"
7
+ require_relative "../../config/environment"
8
8
  require_relative "../models/singer"
9
9
  require_relative "../models/album"
10
10
  require_relative "../models/track"
@@ -16,10 +16,6 @@ class Application
16
16
  tables.rows.each do |row|
17
17
  puts row[:TABLE_NAME]
18
18
  end
19
-
20
- puts ""
21
- puts "Press any key to end the application"
22
- STDIN.getch
23
19
  end
24
20
  end
25
21
 
@@ -6,3 +6,4 @@ development:
6
6
  database: testdb
7
7
  pool: 5
8
8
  timeout: 5000
9
+ schema_dump: false
@@ -22,7 +22,7 @@ class Application
22
22
  to_album = Album.where.not(id: from_album.id).sample
23
23
 
24
24
  puts ""
25
- puts "Transferring 10,000 marketing budget from #{from_album.title} (#{from_album.marketing_budget}) "\
25
+ puts "Transferring 10,000 marketing budget from #{from_album.title} (#{from_album.marketing_budget}) " \
26
26
  "to #{to_album.title} (#{to_album.marketing_budget})"
27
27
  from_album.update marketing_budget: from_album.marketing_budget - 10000
28
28
  to_album.update marketing_budget: to_album.marketing_budget + 10000
@@ -37,10 +37,6 @@ class Application
37
37
  puts "Budgets after commit:"
38
38
  puts "Marketing budget #{from_album.title}: #{from_album.reload.marketing_budget}"
39
39
  puts "Marketing budget #{to_album.title}: #{to_album.reload.marketing_budget}"
40
-
41
- puts ""
42
- puts "Press any key to end the application"
43
- STDIN.getch
44
40
  end
45
41
  end
46
42
 
@@ -6,3 +6,4 @@ development:
6
6
  database: testdb
7
7
  pool: 5
8
8
  timeout: 5000
9
+ schema_dump: false
@@ -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
- require_relative "../../config/environment.rb"
7
+ require_relative "../../config/environment"
8
8
  require_relative "../models/singer"
9
9
  require_relative "../models/album"
10
10
 
@@ -38,10 +38,6 @@ class Application
38
38
 
39
39
  singer.reload
40
40
  puts "Reloaded singer data: #{singer.first_name} #{singer.last_name}, version: #{singer.lock_version}"
41
-
42
- puts ""
43
- puts "Press any key to end the application"
44
- STDIN.getch
45
41
  end
46
42
  end
47
43
 
@@ -6,3 +6,4 @@ development:
6
6
  database: testdb
7
7
  pool: 5
8
8
  timeout: 5000
9
+ schema_dump: false
@@ -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
- require_relative "../../config/environment.rb"
7
+ require_relative "../../config/environment"
8
8
  require_relative "../models/singer"
9
9
  require_relative "../models/album"
10
10
 
@@ -38,10 +38,6 @@ class Application
38
38
  puts ""
39
39
  puts "Singers in the database: #{singer_count}"
40
40
  puts "Albums in the database: #{album_count}"
41
-
42
- puts ""
43
- puts "Press any key to end the application"
44
- STDIN.getch
45
41
  end
46
42
  end
47
43
 
@@ -6,3 +6,4 @@ development:
6
6
  database: testdb
7
7
  pool: 5
8
8
  timeout: 5000
9
+ schema_dump: false
@@ -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
- require_relative "../../config/environment.rb"
7
+ require_relative "../../config/environment"
8
8
  require_relative "../models/singer"
9
9
  require_relative "../models/album"
10
10
 
@@ -17,10 +17,6 @@ class Application
17
17
  puts "Query all Albums and include an automatically generated request tag"
18
18
  albums = Album.all
19
19
  puts "Queried #{albums.length} albums using an automatically generated request tag"
20
-
21
- puts ""
22
- puts "Press any key to end the application"
23
- STDIN.getch
24
20
  end
25
21
 
26
22
  def self.enable_query_logs
@@ -31,16 +27,9 @@ class Application
31
27
  # Query log comments *MUST* be prepended to be included as a request tag.
32
28
  ActiveRecord::QueryLogs.prepend_comment = true
33
29
 
34
- # This block manually enables Query Logs without a full Rails application.
30
+ # Enable query logs in a non-Rails application.
35
31
  # This should normally not be needed in your application.
36
- ActiveRecord::QueryLogs.taggings.merge!(
37
- application: "example-app",
38
- action: "run-test-application",
39
- pid: -> { Process.pid.to_s },
40
- socket: ->(context) { context[:connection].pool.db_config.socket },
41
- db_host: ->(context) { context[:connection].pool.db_config.host },
42
- database: ->(context) { context[:connection].pool.db_config.database }
43
- )
32
+ enable_query_logs_without_rails
44
33
 
45
34
  ActiveRecord::QueryLogs.tags = [
46
35
  # The first tag *MUST* be the fixed value 'request_tag:true'.
@@ -58,6 +47,19 @@ class Application
58
47
  :database
59
48
  ]
60
49
  end
50
+
51
+ def self.enable_query_logs_without_rails
52
+ # This block manually enables Query Logs without a full Rails application.
53
+ # This should normally not be needed in your application.
54
+ ActiveRecord::QueryLogs.taggings = {
55
+ application: "example-app",
56
+ action: "run-test-application",
57
+ pid: -> { Process.pid.to_s },
58
+ socket: ->(context) { context[:connection].pool.db_config.socket },
59
+ db_host: ->(context) { context[:connection].pool.db_config.host },
60
+ database: ->(context) { context[:connection].pool.db_config.database }
61
+ }
62
+ end
61
63
  end
62
64
 
63
65
  Application.run
@@ -6,3 +6,4 @@ development:
6
6
  database: testdb
7
7
  pool: 5
8
8
  timeout: 5000
9
+ schema_dump: false
@@ -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
- require_relative "../../config/environment.rb"
7
+ require_relative "../../config/environment"
8
8
  require_relative "../models/singer"
9
9
  require_relative "../models/album"
10
10
 
@@ -41,10 +41,6 @@ class Application
41
41
  Singer.where(last_name.matches("A%")).each do |s|
42
42
  puts "#{s.first_name} #{s.last_name}"
43
43
  end
44
-
45
- puts ""
46
- puts "Press any key to end the application"
47
- STDIN.getch
48
44
  end
49
45
  end
50
46
 
@@ -6,3 +6,4 @@ development:
6
6
  database: testdb
7
7
  pool: 5
8
8
  timeout: 5000
9
+ schema_dump: false
@@ -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
- require_relative "../../config/environment.rb"
7
+ require_relative "../../config/environment"
8
8
  require_relative "../models/singer"
9
9
  require_relative "../models/album"
10
10
 
@@ -67,10 +67,6 @@ class Application
67
67
  puts "This error is expected."
68
68
  end
69
69
  end
70
-
71
- puts ""
72
- puts "Press any key to end the application"
73
- STDIN.getch
74
70
  end
75
71
  end
76
72
 
@@ -6,3 +6,4 @@ development:
6
6
  database: testdb
7
7
  pool: 5
8
8
  timeout: 5000
9
+ schema_dump: false
@@ -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
- require_relative "../../config/environment.rb"
7
+ require_relative "../../config/environment"
8
8
  require_relative "../models/singer"
9
9
  require_relative "../models/album"
10
10
 
@@ -10,7 +10,7 @@ require_relative "models/singer"
10
10
  require_relative "models/album"
11
11
 
12
12
  class Application
13
- def self.run # rubocop:disable Metrics/AbcSize
13
+ def self.run
14
14
  from_album = nil
15
15
  to_album = nil
16
16
  # Use a read/write transaction to execute multiple statements as an atomic unit.
@@ -20,7 +20,7 @@ class Application
20
20
  to_album = Album.where.not(id: from_album.id).sample
21
21
 
22
22
  puts ""
23
- puts "Transferring 10,000 marketing budget from #{from_album.title} (#{from_album.marketing_budget}) "\
23
+ puts "Transferring 10,000 marketing budget from #{from_album.title} (#{from_album.marketing_budget}) " \
24
24
  "to #{to_album.title} (#{to_album.marketing_budget})"
25
25
  from_album.update marketing_budget: from_album.marketing_budget - 10000
26
26
  to_album.update marketing_budget: to_album.marketing_budget + 10000
@@ -29,10 +29,6 @@ class Application
29
29
  puts "Budgets after update:"
30
30
  puts "Marketing budget #{from_album.title}: #{from_album.reload.marketing_budget}"
31
31
  puts "Marketing budget #{to_album.title}: #{to_album.reload.marketing_budget}"
32
-
33
- puts ""
34
- puts "Press any key to end the application"
35
- STDIN.getch
36
32
  end
37
33
  end
38
34
 
@@ -6,3 +6,4 @@ development:
6
6
  database: testdb
7
7
  pool: 5
8
8
  timeout: 5000
9
+ schema_dump: false
@@ -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
- require_relative "../../config/environment.rb"
7
+ require_relative "../../config/environment"
8
8
  require_relative "../models/singer"
9
9
  require_relative "../models/album"
10
10
 
@@ -53,10 +53,6 @@ class Application
53
53
  puts ""
54
54
  puts "Updated album title: #{album.title}"
55
55
  puts "Title somewhere during the last 10 seconds: #{album_max_staleness&.title}"
56
-
57
- puts ""
58
- puts "Press any key to end the application"
59
- STDIN.getch
60
56
  end
61
57
  end
62
58
 
@@ -6,3 +6,4 @@ development:
6
6
  database: testdb
7
7
  pool: 5
8
8
  timeout: 5000
9
+ schema_dump: false
@@ -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
- require_relative "../../config/environment.rb"
7
+ require_relative "../../config/environment"
8
8
  require_relative "../models/singer"
9
9
  require_relative "../models/album"
10
10
 
@@ -22,10 +22,6 @@ class Application
22
22
  albums = Album.annotate("request_tag: query-all-albums", "transaction_tag: sample-transaction").all
23
23
  puts "Queried #{albums.length} albums using a request and a transaction tag"
24
24
  end
25
-
26
- puts ""
27
- puts "Press any key to end the application"
28
- STDIN.getch
29
25
  end
30
26
  end
31
27
 
@@ -6,3 +6,4 @@ development:
6
6
  database: testdb
7
7
  pool: 5
8
8
  timeout: 5000
9
+ schema_dump: false
@@ -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
- require_relative "../../config/environment.rb"
7
+ require_relative "../../config/environment"
8
8
  require_relative "../models/singer"
9
9
  require_relative "../models/album"
10
10
 
@@ -32,10 +32,6 @@ class Application
32
32
  # Simulate that the application is now running in the timezone America/Los_Angeles.
33
33
  Time.zone = "America/Los_Angeles"
34
34
  puts "#{'Meeting time in the local timezone (America/Los_Angeles):'.ljust 60} #{meeting.local_meeting_time}"
35
-
36
- puts ""
37
- puts "Press any key to end the application"
38
- STDIN.getch
39
35
  end
40
36
  end
41
37
 
@@ -6,3 +6,4 @@ development:
6
6
  database: testdb
7
7
  pool: 5
8
8
  timeout: 5000
9
+ schema_dump: false
@@ -10,16 +10,16 @@ module ActiveRecord
10
10
  module ConnectionAdapters
11
11
  module Spanner
12
12
  class Column < ConnectionAdapters::Column
13
- # rubocop:disable Style/MethodDefParentheses
13
+ # rubocop:disable Style/OptionalBooleanParameter
14
14
  def initialize(name, default, sql_type_metadata = nil, null = true,
15
15
  default_function = nil, collation: nil, comment: nil,
16
16
  primary_key: false, **)
17
- # rubocop:enable Style/MethodDefParentheses
17
+ # rubocop:enable Style/OptionalBooleanParameter
18
18
  super
19
19
  @primary_key = primary_key
20
20
  end
21
21
 
22
- def has_default? # rubocop:disable Naming/PredicateName
22
+ def has_default?
23
23
  super && !virtual?
24
24
  end
25
25