activerecord-spanner-adapter 1.6.3 → 2.0.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.
- checksums.yaml +4 -4
- data/.github/workflows/acceptance-tests-on-emulator.yaml +3 -7
- data/.github/workflows/acceptance-tests-on-production.yaml +1 -1
- data/.github/workflows/ci.yaml +3 -7
- data/.github/workflows/nightly-acceptance-tests-on-emulator.yaml +4 -33
- data/.github/workflows/nightly-acceptance-tests-on-production.yaml +1 -1
- data/.github/workflows/nightly-unit-tests.yaml +5 -33
- data/.github/workflows/rubocop.yaml +1 -1
- data/.github/workflows/samples.yaml +30 -0
- data/.kokoro/populate-secrets.sh +5 -1
- data/.kokoro/release.cfg +22 -12
- data/.kokoro/release.sh +1 -3
- data/.kokoro/trampoline_v2.sh +19 -11
- data/.release-please-manifest.json +1 -1
- data/.rubocop.yml +2 -2
- data/.trampolinerc +6 -1
- data/CHANGELOG.md +37 -0
- data/Gemfile +7 -5
- data/README.md +11 -9
- data/Rakefile +2 -2
- data/acceptance/cases/migration/command_recorder_test.rb +7 -38
- data/acceptance/cases/migration/references_index_test.rb +2 -11
- data/acceptance/cases/migration/schema_dumper_test.rb +21 -9
- data/acceptance/cases/models/binary_identifiers.rb +97 -0
- data/acceptance/cases/models/insert_all_test.rb +22 -7
- data/acceptance/cases/sessions/session_not_found_test.rb +2 -0
- data/acceptance/cases/tasks/database_tasks_test.rb +1 -0
- data/acceptance/models/binary_project.rb +20 -0
- data/acceptance/models/string_io.rb +28 -0
- data/acceptance/models/user.rb +20 -0
- data/acceptance/test_helper.rb +6 -1
- data/activerecord-spanner-adapter.gemspec +3 -3
- data/benchmarks/application.rb +3 -7
- data/examples/snippets/Rakefile +27 -5
- data/examples/snippets/array-data-type/application.rb +1 -5
- data/examples/snippets/array-data-type/config/database.yml +1 -0
- data/examples/snippets/bit-reversed-sequence/application.rb +0 -4
- data/examples/snippets/bit-reversed-sequence/config/database.yml +1 -0
- data/examples/snippets/bit-reversed-sequence/db/seeds.rb +2 -2
- data/examples/snippets/bulk-insert/application.rb +1 -5
- data/examples/snippets/bulk-insert/config/database.yml +1 -0
- data/examples/snippets/commit-timestamp/application.rb +0 -4
- data/examples/snippets/commit-timestamp/config/database.yml +1 -0
- data/examples/snippets/config/environment.rb +5 -0
- data/examples/snippets/create-records/application.rb +1 -5
- data/examples/snippets/create-records/config/database.yml +1 -0
- data/examples/snippets/date-data-type/application.rb +1 -5
- data/examples/snippets/date-data-type/config/database.yml +1 -0
- data/examples/snippets/date-data-type/db/seeds.rb +1 -1
- data/examples/snippets/generated-column/application.rb +0 -4
- data/examples/snippets/generated-column/config/database.yml +1 -0
- data/examples/snippets/generated-column/db/seeds.rb +1 -1
- data/examples/snippets/hints/application.rb +0 -4
- data/examples/snippets/hints/config/database.yml +1 -0
- data/examples/snippets/hints/db/seeds.rb +1 -1
- data/examples/snippets/interleaved-tables/application.rb +1 -5
- data/examples/snippets/interleaved-tables/config/database.yml +1 -0
- data/examples/snippets/interleaved-tables/db/seeds.rb +1 -1
- data/examples/snippets/interleaved-tables/models/album.rb +6 -2
- data/examples/snippets/interleaved-tables/models/track.rb +5 -1
- data/examples/snippets/interleaved-tables-before-7.1/application.rb +1 -5
- data/examples/snippets/interleaved-tables-before-7.1/config/database.yml +1 -0
- data/examples/snippets/interleaved-tables-before-7.1/db/seeds.rb +1 -1
- data/examples/snippets/migrations/application.rb +0 -4
- data/examples/snippets/migrations/config/database.yml +1 -0
- data/examples/snippets/mutations/application.rb +1 -5
- data/examples/snippets/mutations/config/database.yml +1 -0
- data/examples/snippets/mutations/db/seeds.rb +1 -1
- data/examples/snippets/optimistic-locking/application.rb +0 -4
- data/examples/snippets/optimistic-locking/config/database.yml +1 -0
- data/examples/snippets/optimistic-locking/db/seeds.rb +1 -1
- data/examples/snippets/partitioned-dml/application.rb +0 -4
- data/examples/snippets/partitioned-dml/config/database.yml +1 -0
- data/examples/snippets/partitioned-dml/db/seeds.rb +1 -1
- data/examples/snippets/query-logs/application.rb +15 -13
- data/examples/snippets/query-logs/config/database.yml +1 -0
- data/examples/snippets/query-logs/db/seeds.rb +1 -1
- data/examples/snippets/quickstart/application.rb +0 -4
- data/examples/snippets/quickstart/config/database.yml +1 -0
- data/examples/snippets/quickstart/db/seeds.rb +1 -1
- data/examples/snippets/read-only-transactions/application.rb +0 -4
- data/examples/snippets/read-only-transactions/config/database.yml +1 -0
- data/examples/snippets/read-only-transactions/db/seeds.rb +1 -1
- data/examples/snippets/read-write-transactions/application.rb +2 -6
- data/examples/snippets/read-write-transactions/config/database.yml +1 -0
- data/examples/snippets/read-write-transactions/db/seeds.rb +1 -1
- data/examples/snippets/stale-reads/application.rb +0 -4
- data/examples/snippets/stale-reads/config/database.yml +1 -0
- data/examples/snippets/stale-reads/db/seeds.rb +1 -1
- data/examples/snippets/tags/application.rb +0 -4
- data/examples/snippets/tags/config/database.yml +1 -0
- data/examples/snippets/tags/db/seeds.rb +1 -1
- data/examples/snippets/timestamp-data-type/application.rb +0 -4
- data/examples/snippets/timestamp-data-type/config/database.yml +1 -0
- data/lib/active_record/connection_adapters/spanner/column.rb +3 -3
- data/lib/active_record/connection_adapters/spanner/database_statements.rb +37 -23
- data/lib/active_record/connection_adapters/spanner/quoting.rb +19 -6
- data/lib/active_record/connection_adapters/spanner/schema_creation.rb +7 -9
- data/lib/active_record/connection_adapters/spanner/schema_definitions.rb +12 -2
- data/lib/active_record/connection_adapters/spanner/schema_statements.rb +28 -46
- data/lib/active_record/connection_adapters/spanner/type_metadata.rb +4 -6
- data/lib/active_record/connection_adapters/spanner_adapter.rb +54 -27
- data/lib/active_record/tasks/spanner_database_tasks.rb +4 -4
- data/lib/active_record/type/spanner/array.rb +4 -0
- data/lib/active_record/type/spanner/bytes.rb +10 -0
- data/lib/activerecord-spanner-adapter.rb +5 -1
- data/lib/activerecord_spanner_adapter/base.rb +58 -30
- data/lib/activerecord_spanner_adapter/connection.rb +9 -5
- data/lib/activerecord_spanner_adapter/foreign_key.rb +9 -2
- data/lib/activerecord_spanner_adapter/index/column.rb +6 -1
- data/lib/activerecord_spanner_adapter/index.rb +10 -2
- data/lib/activerecord_spanner_adapter/information_schema.rb +1 -1
- data/lib/activerecord_spanner_adapter/primary_key.rb +2 -2
- data/lib/activerecord_spanner_adapter/table/column.rb +12 -3
- data/lib/activerecord_spanner_adapter/table.rb +8 -2
- data/lib/activerecord_spanner_adapter/transaction.rb +1 -1
- data/lib/activerecord_spanner_adapter/version.rb +1 -1
- data/lib/arel/visitors/spanner.rb +16 -11
- data/lib/spanner_client_ext.rb +4 -3
- metadata +15 -34
- data/examples/snippets/array-data-type/db/schema.rb +0 -31
- data/examples/snippets/bit-reversed-sequence/db/schema.rb +0 -31
- data/examples/snippets/bulk-insert/db/schema.rb +0 -31
- data/examples/snippets/commit-timestamp/db/schema.rb +0 -34
- data/examples/snippets/create-records/db/schema.rb +0 -31
- data/examples/snippets/date-data-type/db/schema.rb +0 -26
- data/examples/snippets/generated-column/db/schema.rb +0 -26
- data/examples/snippets/hints/db/schema.rb +0 -33
- data/examples/snippets/interleaved-tables/db/schema.rb +0 -39
- data/examples/snippets/interleaved-tables-before-7.1/db/schema.rb +0 -37
- data/examples/snippets/migrations/db/schema.rb +0 -38
- data/examples/snippets/mutations/db/schema.rb +0 -32
- data/examples/snippets/optimistic-locking/db/schema.rb +0 -34
- data/examples/snippets/partitioned-dml/db/schema.rb +0 -31
- data/examples/snippets/query-logs/db/schema.rb +0 -31
- data/examples/snippets/quickstart/db/schema.rb +0 -31
- data/examples/snippets/read-only-transactions/db/schema.rb +0 -31
- data/examples/snippets/read-write-transactions/db/schema.rb +0 -32
- data/examples/snippets/stale-reads/db/schema.rb +0 -31
- data/examples/snippets/tags/db/schema.rb +0 -31
- 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
|
|
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]
|
|
@@ -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
|
|
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
|
-
|
|
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
|
|
@@ -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
|
|
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
|
-
|
|
15
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
@@ -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
|
|
7
|
+
require_relative "../../config/environment"
|
|
8
8
|
require_relative "../models/singer"
|
|
9
9
|
require_relative "../models/album"
|
|
10
10
|
require_relative "../models/track"
|
|
@@ -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
|
|
|
@@ -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
|
|
7
|
+
require_relative "../../config/environment"
|
|
8
8
|
require_relative "../models/singer"
|
|
9
9
|
require_relative "../models/album"
|
|
10
10
|
|
|
@@ -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
|
|
7
|
+
require_relative "../../config/environment"
|
|
8
8
|
require_relative "../models/singer"
|
|
9
9
|
require_relative "../models/album"
|
|
10
10
|
|
|
@@ -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
|
|
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
|
-
#
|
|
30
|
+
# Enable query logs in a non-Rails application.
|
|
35
31
|
# This should normally not be needed in your application.
|
|
36
|
-
|
|
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
|
|
@@ -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
|
|
7
|
+
require_relative "../../config/environment"
|
|
8
8
|
require_relative "../models/singer"
|
|
9
9
|
require_relative "../models/album"
|
|
10
10
|
|
|
@@ -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
|
|
7
|
+
require_relative "../../config/environment"
|
|
8
8
|
require_relative "../models/singer"
|
|
9
9
|
require_relative "../models/album"
|
|
10
10
|
|
|
@@ -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
|
|
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
|
|
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
|
|
|
@@ -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
|
|
7
|
+
require_relative "../../config/environment"
|
|
8
8
|
require_relative "../models/singer"
|
|
9
9
|
require_relative "../models/album"
|
|
10
10
|
|
|
@@ -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
|
|
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
|
|
|
@@ -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
|
|
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
|
|
|
@@ -10,16 +10,16 @@ module ActiveRecord
|
|
|
10
10
|
module ConnectionAdapters
|
|
11
11
|
module Spanner
|
|
12
12
|
class Column < ConnectionAdapters::Column
|
|
13
|
-
# rubocop:disable Style/
|
|
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/
|
|
17
|
+
# rubocop:enable Style/OptionalBooleanParameter
|
|
18
18
|
super
|
|
19
19
|
@primary_key = primary_key
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
def has_default?
|
|
22
|
+
def has_default?
|
|
23
23
|
super && !virtual?
|
|
24
24
|
end
|
|
25
25
|
|