typed_uuid 4.0 → 4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eb375ca568f121a2a996b9afd41123e18b820621e4417b2bce05024364eef414
4
- data.tar.gz: 15d885d11a1dbcb19ca60733312ad0b21bcf77a0f9ce165ce8b25fa24f43cecf
3
+ metadata.gz: 4f970db2e5a0edffaa90e664113f7cc9ecde9a1c217301cb53f132994e74a18d
4
+ data.tar.gz: 8762a572a7b9ade2cecdb282a90b6fe030ad547305207c7c616674dd4772ace3
5
5
  SHA512:
6
- metadata.gz: 38c295658ce41fac5b51c27fdb4df1922ef426e71c2bb234e7af0e0b87abdb11e8110c3e4604e84909f30aa4a3fd2782b740b443aae9ee926fc7ad567a31a8f6
7
- data.tar.gz: 42139374aa96e9a43b5f0f7d749a410617fa14c1affd0fa334e1fe59661189fb58d911b26056aa9e5cc6092709db6ab62541c88f788be54cfe946f45bca5868c
6
+ metadata.gz: 662ddc5ed10e7a43eff50ff0aadf4ada9d43490f2c5370045aa2e4f41a64ef5d58cb8cc33cb8452104106de51a30abf6d950766a8bf8d019fa329e4716bbd689
7
+ data.tar.gz: 6ba7853a8853d37479d5eba8e11ca48d3b64e0c98ff7b1dd05ad9c1c635d2c3d34be06da4219ff76ca68d232d93ed88b4b01428b3e570342096d27961024307d
@@ -1,28 +1,49 @@
1
1
  name: CI
2
2
 
3
- on:
3
+ on:
4
4
  push:
5
- branches: [ master ]
6
5
  pull_request:
7
- branches: [ master ]
6
+ types: [opened]
8
7
 
9
8
  jobs:
10
9
  test:
11
10
  name: TypedUUID Test
12
- runs-on: ubuntu-20.04
11
+ runs-on: ubuntu-22.04
12
+ strategy:
13
+ matrix:
14
+ rails-version:
15
+ - 7.0.8
16
+ - 7.1.2
17
+ ruby-version:
18
+ - 3.0
19
+ - 3.1
20
+ - 3.2
21
+ postgres-version:
22
+ - 15
13
23
 
14
24
  steps:
15
- - uses: ruby/setup-ruby@v1
16
- with:
17
- ruby-version: 3.0
25
+ - name: Install Postgresql
26
+ run: |
27
+ sudo apt-get -y --purge remove $(sudo apt list --installed | grep postgresql | awk '{print $1}')
28
+ sudo apt-get install curl ca-certificates gnupg
29
+ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
30
+ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
31
+ sudo apt-get update
32
+ sudo apt-get -y install postgresql-${{ matrix.postgres-version }}-postgis-3
33
+ sudo systemctl start postgresql@${{ matrix.postgres-version }}-main.service
34
+ sudo systemctl status postgresql@${{ matrix.postgres-version }}-main.service
35
+ sudo pg_lsclusters
36
+ sudo -u postgres createuser runner --superuser
37
+ sudo -u postgres psql -c "ALTER USER runner WITH PASSWORD 'runner';"
18
38
 
19
- - uses: actions/checkout@v2
39
+ - uses: actions/checkout@v4
20
40
 
21
41
  - run: |
22
- sudo systemctl start postgresql.service
23
- sudo -u postgres createuser runner --superuser
24
- sudo -u postgres createdb uuid-types-test
42
+ echo 'gem "rails", "${{ matrix.rails-version }}"' >> Gemfile
25
43
 
26
- - run: bundle
44
+ - uses: ruby/setup-ruby@v1
45
+ with:
46
+ ruby-version: ${{ matrix.ruby-version }}
47
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
27
48
 
28
49
  - run: bundle exec rake test
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gemspec
3
+ gemspec
data/README.md CHANGED
@@ -31,9 +31,9 @@ Typed UUID will give us back the ENUM and Version of the Type using soley the UU
31
31
  As with regular UUID Typed UUIDs come in multiple version. The current versions are:
32
32
 
33
33
  - Version 1: A timebased UUID where the first 56 bits are an unsigned integer
34
- representing the microseconds since epoch. Followed by 48 random
35
- bits or a sequence counter. Then 8 random bits followed by 16 bits
36
- which are the UUID type.
34
+ representing the microseconds since epoch. Followed by 56 random
35
+ bits or a sequence counter. Followed by 16 bits which are the UUID
36
+ type.
37
37
 
38
38
  - Version 3: A name-based UUID where the first 112 bits are based off the MD5
39
39
  digest of the namespace and name. The following 16 bits are the
@@ -70,7 +70,7 @@ ActiveRecord::Base.register_uuid_types({
70
70
  ActiveRecord::Base.register_uuid_types({
71
71
  0 => :Listing,
72
72
  512 => :Building,
73
- 8_191 => 'Building::SkyScrpaer'
73
+ 8_191 => 'Building::SkyScrpaer'
74
74
  })
75
75
  ```
76
76
 
@@ -83,7 +83,7 @@ a table.
83
83
  ```ruby
84
84
  class CreateProperties < ActiveRecord::Migration[5.2]
85
85
  def change
86
- create_table :properties, id: :typed_uuid do |t|
86
+ create_table :properties, id: :typed_uuid do |t|
87
87
  t.string "name", limit: 255
88
88
  end
89
89
  end
@@ -116,6 +116,12 @@ class UpdateProperties < ActiveRecord::Migration[6.1]
116
116
  end
117
117
  ```
118
118
 
119
+ When you need to lookup they class of a TypedUUID:
120
+
121
+ ```ruby
122
+ ActiveRecord::Base.class_from_uuid(my_uuid) #=> MyClass
123
+ ```
124
+
119
125
  ## STI Models
120
126
  When using STI Model Rails will generate the UUID to be inserted. This UUID will
121
127
  be calculated of the STI Model class and not the base class.
@@ -12,8 +12,8 @@ class AddTypedUuidFunction < ActiveRecord::Migration[6.0]
12
12
  BEGIN
13
13
  IF version = 1 THEN
14
14
  bytes := decode(concat(
15
- lpad(right(to_hex((extract(epoch from clock_timestamp())*1000000)::bigint), 12), 12, '0'),
16
- encode(gen_random_bytes(10), 'hex')
15
+ lpad(right(to_hex((extract(epoch from clock_timestamp())*1000000)::bigint), 14), 14, '0'),
16
+ encode(gen_random_bytes(9), 'hex')
17
17
  ), 'hex');
18
18
  ELSE
19
19
  bytes := gen_random_bytes(16);
@@ -117,10 +117,7 @@ module TypedUUID::ActiveRecord
117
117
  Rails.application.eager_load! if !Rails.application.config.eager_load
118
118
 
119
119
  ::ActiveRecord::Base.descendants.find do |klass|
120
- next unless ( klass.superclass == ::ActiveRecord::Base || klass.superclass.abstract_class? )
121
- next if klass.table_name.nil?
122
-
123
- klass.table_name == table
120
+ (klass.table_name || klass.send(:compute_table_name)) == table
124
121
  end
125
122
  end
126
123
 
@@ -4,7 +4,6 @@ module TypedUUID::PsqlColumnMethods
4
4
  if type == :typed_uuid
5
5
  klass_type_enum = ::ActiveRecord::Base.uuid_enum_from_table_name(self.name)
6
6
  klass_type_version = ::ActiveRecord::Base.uuid_version_from_table_name(self.name)
7
- options[:id] = :uuid
8
7
  options[:default] ||= -> { "typed_uuid(#{klass_type_enum}, #{klass_type_version})" }
9
8
  super(name, :uuid, **options)
10
9
  else
@@ -14,8 +14,8 @@ module TypedUUID::PsqlSchemaDumper
14
14
  BEGIN
15
15
  IF version = 1 THEN
16
16
  bytes := decode(concat(
17
- lpad(right(to_hex((extract(epoch from clock_timestamp())*1000000)::bigint), 12), 12, '0'),
18
- encode(gen_random_bytes(10), 'hex')
17
+ lpad(right(to_hex((extract(epoch from clock_timestamp())*1000000)::bigint), 14), 14, '0'),
18
+ encode(gen_random_bytes(9), 'hex')
19
19
  ), 'hex');
20
20
  ELSE
21
21
  bytes := gen_random_bytes(16);
@@ -1,7 +1,7 @@
1
1
  class TypedUUID::Railtie < Rails::Railtie
2
2
 
3
3
  initializer :typed_uuid do |app|
4
- ActiveRecord::Tasks::DatabaseTasks.migrations_paths << File.expand_path('../../../db/migrate', __FILE__)
4
+ ActiveRecord::Tasks::DatabaseTasks.migrations_paths << TypedUUID::MIGRATIONS_PATH
5
5
 
6
6
  ActiveSupport.on_load(:active_record) do
7
7
  ActiveRecord::Base.include TypedUUID::ActiveRecord
@@ -1,3 +1,3 @@
1
1
  module TypedUUID
2
- VERSION = '4.0'
2
+ VERSION = '4.2'
3
3
  end
data/lib/typed_uuid.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'digest/sha1'
2
2
 
3
3
  module TypedUUID
4
+ MIGRATIONS_PATH = File.expand_path('../../db/migrate', __FILE__)
5
+
4
6
  autoload :ActiveRecord, 'typed_uuid/active_record'
5
7
  autoload :PsqlColumnMethods, 'typed_uuid/psql_column_methods'
6
8
  autoload :PsqlSchemaDumper, 'typed_uuid/psql_schema_dumper'
@@ -35,10 +37,25 @@ module TypedUUID
35
37
  timestamp ||= Time.now
36
38
 
37
39
  uuid = [timestamp.to_i * 1_000_000 + timestamp.usec].pack('Q>')[1..-1]
38
- uuid << (sequence&.pack('Q>') || SecureRandom.random_bytes(10))
40
+ uuid << if sequence.nil?
41
+ SecureRandom.random_bytes(8)
42
+ elsif sequence.is_a?(Integer)
43
+ sequence = [sequence].pack("Q>")
44
+ if sequence.bytesize == 8 && sequence[0] == "\x00"
45
+ sequence[1..]
46
+ else
47
+ raise ArgumentError, 'Sequence must be less than 8 bytes'
48
+ end
49
+ elsif sequence.is_a?(String)
50
+ raise ArgumentError, 'Sequence must be less than 8 bytes' if sequence.bytesize > 7
51
+ sequence.b
52
+ else
53
+ raise ArgumentError, 'Unable to convert sequence to binary'
54
+ end
55
+ uuid << "\x00\x00"
39
56
 
40
57
  uuid = uuid.unpack("nnnnnnnn")
41
- uuid[7] = (uuid[2] ^ uuid[6]) ^ ((enum << 3) | 1)
58
+ uuid[7] = ((uuid[2] ^ uuid[6]) ^ ((enum << 3) | 1))
42
59
  "%04x%04x-%04x-%04x-%04x-%04x%04x%04x" % uuid
43
60
  end
44
61
 
@@ -63,6 +80,15 @@ module TypedUUID
63
80
  Time.at(*uuid[0..13].to_i(16).divmod(1_000_000), :usec)
64
81
  end
65
82
 
83
+ def sequence_b(uuid)
84
+ uuid = uuid.gsub('-', '')
85
+ uuid[14..30].scan(/.{4}/).map{|i| i.to_i(16) }.pack('n*').b[0..-2]
86
+ end
87
+
88
+ def sequence(uuid)
89
+ ("\x00" + sequence_b(uuid)).unpack1('Q>')
90
+ end
91
+
66
92
  end
67
93
  end
68
94
 
@@ -0,0 +1,116 @@
1
+ require 'test_helper'
2
+
3
+ class DatabaseFunctionTest < ActiveSupport::TestCase
4
+
5
+ schema do
6
+ ActiveRecord::Base.register_uuid_types({
7
+ 'DatabaseFunctionTest::Ship' => {enum: 13, version: 1}
8
+ })
9
+
10
+ create_table :ships, id: :typed_uuid do |t|
11
+ t.string "name", limit: 255
12
+ end
13
+ end
14
+
15
+ class Ship < ActiveRecord::Base
16
+ end
17
+
18
+ class Sailor < ActiveRecord::Base
19
+ end
20
+
21
+ class Sea < ActiveRecord::Base
22
+ end
23
+
24
+ class ApplicationRecord < ActiveRecord::Base
25
+ primary_abstract_class
26
+ end
27
+
28
+ class Bird < ApplicationRecord
29
+ self.abstract_class = true
30
+ end
31
+
32
+ class Emu < Bird
33
+ end
34
+
35
+ test 'adding primary key as a typed_uuid in a migration' do
36
+ ActiveRecord::Base.register_uuid_types({
37
+ 1 => 'DatabaseFunctionTest::Sailor'
38
+ })
39
+
40
+ exprexted_sql = <<-SQL
41
+ CREATE TABLE "sailors" ("id" uuid DEFAULT typed_uuid(1, 4) NOT NULL PRIMARY KEY, "name" character varying(255))
42
+ SQL
43
+
44
+ assert_sql exprexted_sql do
45
+ ActiveRecord::Migration.suppress_messages do
46
+ ActiveRecord::Migration.create_table :sailors, id: :typed_uuid do |t|
47
+ t.string "name", limit: 255
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ test 'adding primary key as a typed_uuid in a migration with a version' do
54
+ ActiveRecord::Base.register_uuid_types({
55
+ 'DatabaseFunctionTest::Sea' => {version: 1, enum: 512}
56
+ })
57
+
58
+ exprexted_sql = <<-SQL
59
+ CREATE TABLE "seas" ("id" uuid DEFAULT typed_uuid(512, 1) NOT NULL PRIMARY KEY, "name" character varying(255))
60
+ SQL
61
+
62
+ assert_sql exprexted_sql do
63
+ ActiveRecord::Migration.suppress_messages do
64
+ ActiveRecord::Migration.create_table :seas, id: :typed_uuid do |t|
65
+ t.string "name", limit: 255
66
+ end
67
+ end
68
+ end
69
+ end
70
+
71
+ test 'adding primary key as a typed_uuid in a migration to a STI table' do
72
+ ActiveRecord::Base.register_uuid_types({
73
+ 30 => 'DatabaseFunctionTest::Bird',
74
+ 31 => 'DatabaseFunctionTest::Emu'
75
+ })
76
+
77
+ exprexted_sql = <<-SQL
78
+ CREATE TABLE "birds" ("id" uuid DEFAULT typed_uuid(30, 4) NOT NULL PRIMARY KEY, "name" character varying(255))
79
+ SQL
80
+
81
+ assert_sql exprexted_sql do
82
+ ActiveRecord::Migration.suppress_messages do
83
+ ActiveRecord::Migration.create_table :birds, id: :typed_uuid do |t|
84
+ t.string "name", limit: 255
85
+ end
86
+ end
87
+ end
88
+ end
89
+
90
+ test 'typed_uuid(enum)' do
91
+ uuid = ActiveRecord::Base.connection.execute('SELECT typed_uuid(13) AS uuid')[0]['uuid']
92
+
93
+ assert_equal 13, TypedUUID.enum(uuid)
94
+ assert_equal 4, TypedUUID.version(uuid)
95
+ assert_equal DatabaseFunctionTest::Ship, ::ActiveRecord::Base.class_from_uuid(uuid)
96
+ end
97
+
98
+ test 'typed_uuid(enum, 4)' do
99
+ uuid = ActiveRecord::Base.connection.execute('SELECT typed_uuid(13, 4) AS uuid')[0]['uuid']
100
+
101
+ assert_equal 13, TypedUUID.enum(uuid)
102
+ assert_equal 4, TypedUUID.version(uuid)
103
+ assert_equal DatabaseFunctionTest::Ship, ::ActiveRecord::Base.class_from_uuid(uuid)
104
+ end
105
+
106
+ test 'typed_uuid(enum, 1)' do
107
+ time = Time.now
108
+ uuid = ActiveRecord::Base.connection.execute('SELECT typed_uuid(13, 1) AS uuid')[0]['uuid']
109
+
110
+ assert_equal 13, TypedUUID.enum(uuid)
111
+ assert_equal 1, TypedUUID.version(uuid)
112
+ assert (time.ceil(0) - TypedUUID.timestamp(uuid).ceil(0)).abs <= 1
113
+ assert_equal DatabaseFunctionTest::Ship, ::ActiveRecord::Base.class_from_uuid(uuid)
114
+ end
115
+
116
+ end
data/test/test_helper.rb CHANGED
@@ -28,9 +28,7 @@ module ActiveRecord::Tasks::DatabaseTasks
28
28
  end
29
29
  TypedUUID::Railtie.initializers.each(&:run)
30
30
  Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
31
- def MiniTest.filter_backtrace(bt)
32
- bt
33
- end
31
+
34
32
  class ActiveSupport::TestCase
35
33
 
36
34
  # File 'lib/active_support/testing/declarative.rb'
@@ -67,7 +65,8 @@ class ActiveSupport::TestCase
67
65
  ActiveRecord::Base.establish_connection(configuration)
68
66
 
69
67
  db_tasks = ActiveRecord::Tasks::PostgreSQLDatabaseTasks.new(ActiveRecord::Base.connection_db_config)
70
- db_tasks.purge
68
+ db_tasks.drop
69
+ db_tasks.create
71
70
 
72
71
  ActiveRecord::Migration.suppress_messages do
73
72
  AddTypedUuidFunction.migrate :up
@@ -103,18 +102,15 @@ class ActiveSupport::TestCase
103
102
  if patterns_to_match.all? { |s| s.is_a?(String) } && patterns_to_match.size > 1
104
103
  assert_equal(*patterns_to_match.take(2).map { |sql| sql.gsub(/( +|\n\s*|\s+)/, ' ').strip })
105
104
  else
106
- begin
107
- ret_value = nil
108
- capture_sql { ret_value = yield }
109
- ret_value
110
- ensure
111
- patterns_to_match.map! {|p| p.is_a?(String) ? p.gsub(/( +|\n\s*|\s+)/, ' ').strip : p }
112
- failed_patterns = []
113
- patterns_to_match.each do |pattern|
114
- failed_patterns << pattern unless SQLLogger.log_all.any?{ |sql| pattern === sql.gsub(/( +|\n\s*|\s+)/, ' ').strip }
115
- end
116
- assert failed_patterns.empty?, "Query pattern(s) #{failed_patterns.map(&:inspect).join(', ')} not found.#{SQLLogger.log.size == 0 ? '' : "\nQueries:\n#{SQLLogger.log.join("\n")}"}"
105
+ ret_value = nil
106
+ capture_sql { ret_value = yield }
107
+ patterns_to_match.map! {|p| p.is_a?(String) ? p.gsub(/( +|\n\s*|\s+)/, ' ').strip : p }
108
+ failed_patterns = []
109
+ patterns_to_match.each do |pattern|
110
+ failed_patterns << pattern unless SQLLogger.log_all.any?{ |sql| pattern === sql.gsub(/( +|\n\s*|\s+)/, ' ').strip }
117
111
  end
112
+ assert failed_patterns.empty?, "Query pattern(s) #{failed_patterns.map(&:inspect).join(', ')} not found.#{SQLLogger.log.size == 0 ? '' : "\nQueries:\n#{SQLLogger.log.join("\n")}"}"
113
+ ret_value
118
114
  end
119
115
  end
120
116
 
@@ -103,6 +103,52 @@ class UUIDTest < ActiveSupport::TestCase
103
103
  assert_equal Listing, ::ActiveRecord::Base.class_from_uuid(Listing.typed_uuid)
104
104
  end
105
105
 
106
+ test 'typed_uuid v1 with a timestamp' do
107
+ time = Time.at(1606612254, 370979, :usec)
108
+ uuid = TypedUUID.uuid(592, 1, timestamp: time)
109
+
110
+ assert_equal 1, TypedUUID.version(uuid)
111
+ assert_equal 592, TypedUUID.enum(uuid)
112
+
113
+ assert_equal time, TypedUUID.timestamp(uuid)
114
+ assert_equal time.to_i, TypedUUID.timestamp(uuid).to_i
115
+ assert_equal time.nsec, TypedUUID.timestamp(uuid).nsec
116
+
117
+ assert_equal Listing, ::ActiveRecord::Base.class_from_uuid(Listing.typed_uuid)
118
+ end
119
+
120
+ test 'typed_uuid v1 with sequence as a string' do
121
+ uuid = TypedUUID.uuid(592, 1, sequence: '1234567')
122
+
123
+ assert_equal 1, TypedUUID.version(uuid)
124
+ assert_equal 592, TypedUUID.enum(uuid)
125
+ assert_equal '1234567', TypedUUID.sequence_b(uuid)
126
+ assert_equal 13847469359445559, TypedUUID.sequence(uuid)
127
+
128
+
129
+ assert_equal Listing, ::ActiveRecord::Base.class_from_uuid(Listing.typed_uuid)
130
+ end
131
+
132
+ test 'typed_uuid v1 with sequence as a integer' do
133
+ uuid = TypedUUID.uuid(592, 1, sequence: 123456)
134
+
135
+ assert_equal 1, TypedUUID.version(uuid)
136
+ assert_equal 592, TypedUUID.enum(uuid)
137
+ assert_equal 123456, TypedUUID.sequence(uuid)
138
+ assert_equal "\x00\x00\x00\x00\x01\xE2@".b, TypedUUID.sequence_b(uuid)
139
+
140
+ assert_equal Listing, ::ActiveRecord::Base.class_from_uuid(Listing.typed_uuid)
141
+
142
+ [0, 1, 72057594037927935].each do |seq|
143
+ uuid = TypedUUID.uuid(592, 1, sequence: seq)
144
+ assert_equal seq, TypedUUID.sequence(uuid)
145
+ end
146
+
147
+ assert_raises ArgumentError do
148
+ TypedUUID.uuid(592, 1, sequence: 72057594037927936)
149
+ end
150
+ end
151
+
106
152
  test 'class_from uuid generated bye PostgresQL' do
107
153
  listing = Listing.create
108
154
  building = Building.create
data/typed_uuid.gemspec CHANGED
@@ -22,10 +22,10 @@ Gem::Specification.new do |s|
22
22
  s.add_development_dependency 'simplecov'
23
23
  s.add_development_dependency 'mocha'
24
24
  s.add_development_dependency 'byebug'
25
- s.add_development_dependency 'activesupport', '>= 6.0.0'
26
- s.add_development_dependency 'rails', '>= 6.0.0'
25
+ s.add_development_dependency 'activesupport', '>= 7.0.0'
26
+ s.add_development_dependency 'rails', '>= 7.0.0'
27
27
  s.add_development_dependency 'pg'
28
28
 
29
29
  # Runtime
30
- s.add_runtime_dependency 'activerecord', '>= 6.0.0'
30
+ s.add_runtime_dependency 'activerecord', '>= 7.0.0'
31
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typed_uuid
3
3
  version: !ruby/object:Gem::Version
4
- version: '4.0'
4
+ version: '4.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Bracy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-02 00:00:00.000000000 Z
11
+ date: 2023-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -114,28 +114,28 @@ dependencies:
114
114
  requirements:
115
115
  - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: 6.0.0
117
+ version: 7.0.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: 6.0.0
124
+ version: 7.0.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rails
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ">="
130
130
  - !ruby/object:Gem::Version
131
- version: 6.0.0
131
+ version: 7.0.0
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
- version: 6.0.0
138
+ version: 7.0.0
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: pg
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +156,14 @@ dependencies:
156
156
  requirements:
157
157
  - - ">="
158
158
  - !ruby/object:Gem::Version
159
- version: 6.0.0
159
+ version: 7.0.0
160
160
  type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - ">="
165
165
  - !ruby/object:Gem::Version
166
- version: 6.0.0
166
+ version: 7.0.0
167
167
  description: Typed UUIDs 2 bytes are reserved in the UUID for the class enum
168
168
  email:
169
169
  - jonbracy@gmail.com
@@ -185,6 +185,7 @@ files:
185
185
  - lib/typed_uuid/psql_schema_dumper.rb
186
186
  - lib/typed_uuid/railtie.rb
187
187
  - lib/typed_uuid/version.rb
188
+ - test/database_function_test.rb
188
189
  - test/test_helper.rb
189
190
  - test/typed_uuid_test.rb
190
191
  - typed_uuid.gemspec
@@ -206,10 +207,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
206
207
  - !ruby/object:Gem::Version
207
208
  version: '0'
208
209
  requirements: []
209
- rubygems_version: 3.2.3
210
+ rubygems_version: 3.4.13
210
211
  signing_key:
211
212
  specification_version: 4
212
213
  summary: Typed UUIDs for ActiveRecord
213
214
  test_files:
215
+ - test/database_function_test.rb
214
216
  - test/test_helper.rb
215
217
  - test/typed_uuid_test.rb