activeid 0.6.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 (51) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +21 -0
  3. data/.github/workflows/macos.yml +45 -0
  4. data/.github/workflows/ubuntu.yml +47 -0
  5. data/.github/workflows/windows.yml +40 -0
  6. data/.gitignore +195 -0
  7. data/.hound.yml +3 -0
  8. data/.rubocop.yml +18 -0
  9. data/Gemfile +7 -0
  10. data/LICENSE.md +19 -0
  11. data/README.adoc +411 -0
  12. data/Rakefile +27 -0
  13. data/activeid.gemspec +42 -0
  14. data/examples/name_based_uuids.rb +92 -0
  15. data/examples/registering_active_record_type.rb +74 -0
  16. data/examples/storing_uuids_as_binaries.rb +88 -0
  17. data/examples/storing_uuids_as_strings.rb +81 -0
  18. data/examples/storing_uuids_natively.rb +93 -0
  19. data/examples/time_based_uuids.rb +58 -0
  20. data/examples/using_migrations.rb +50 -0
  21. data/gemfiles/Rails-5_0.gemfile +8 -0
  22. data/gemfiles/Rails-5_1.gemfile +8 -0
  23. data/gemfiles/Rails-5_2.gemfile +8 -0
  24. data/gemfiles/Rails-head.gemfile +8 -0
  25. data/lib/active_id.rb +12 -0
  26. data/lib/active_id/all.rb +2 -0
  27. data/lib/active_id/connection_patches.rb +65 -0
  28. data/lib/active_id/model.rb +55 -0
  29. data/lib/active_id/railtie.rb +12 -0
  30. data/lib/active_id/type.rb +100 -0
  31. data/lib/active_id/utils.rb +77 -0
  32. data/lib/active_id/version.rb +3 -0
  33. data/spec/integration/examples_for_uuid_models.rb +92 -0
  34. data/spec/integration/examples_for_uuid_models_having_namespaces.rb +12 -0
  35. data/spec/integration/examples_for_uuid_models_having_natural_keys.rb +11 -0
  36. data/spec/integration/migrations_spec.rb +92 -0
  37. data/spec/integration/model_without_uuids_spec.rb +44 -0
  38. data/spec/integration/no_patches_spec.rb +26 -0
  39. data/spec/integration/storing_uuids_as_binaries_spec.rb +34 -0
  40. data/spec/integration/storing_uuids_as_strings_spec.rb +22 -0
  41. data/spec/spec_helper.rb +64 -0
  42. data/spec/support/0_logger.rb +2 -0
  43. data/spec/support/1_db_connection.rb +3 -0
  44. data/spec/support/2_db_cleaner.rb +14 -0
  45. data/spec/support/database.yml +12 -0
  46. data/spec/support/fabricators.rb +15 -0
  47. data/spec/support/models.rb +41 -0
  48. data/spec/support/schema.rb +38 -0
  49. data/spec/unit/attribute_type_spec.rb +70 -0
  50. data/spec/unit/utils_spec.rb +97 -0
  51. metadata +313 -0
@@ -0,0 +1,15 @@
1
+ uuid_fab_prefixes = %i[binary string native]
2
+ uuid_fab_suffixes = [nil, :with_namespace, :with_natural_key]
3
+
4
+ fab_names = uuid_fab_prefixes.product(uuid_fab_suffixes).map do |p, s|
5
+ [p, "uuid_article", s].compact.join("_").to_sym
6
+ end
7
+
8
+ fab_names.push(:article)
9
+
10
+ fab_names.each do |fab_name|
11
+ Fabricator(fab_name) do
12
+ title { Forgery::LoremIpsum.word }
13
+ body { Forgery::LoremIpsum.sentence }
14
+ end
15
+ end
@@ -0,0 +1,41 @@
1
+ class Article < ActiveRecord::Base
2
+ end
3
+
4
+ # Defines classes:
5
+ #
6
+ # - BinaryUuidArticle
7
+ # - BinaryUuidArticleWithNaturalKey
8
+ # - BinaryUuidArticleWithNamespace
9
+ # - StringUuidArticle
10
+ # - StringUuidArticleWithNaturalKey
11
+ # - StringUuidArticleWithNamespace
12
+ # - NativeUuidArticle
13
+ # - NativeUuidArticleWithNaturalKey
14
+ # - NativeUuidArticleWithNamespace
15
+ %w[binary string native].each do |table_prefix|
16
+ table_name = "#{table_prefix}_uuid_articles"
17
+ attribute_type_name = table_prefix == "binary" ? "BinaryUUID" : "StringUUID"
18
+ attribute_type = ActiveID::Type.const_get(attribute_type_name)
19
+
20
+ regular_class = Class.new(ActiveRecord::Base) do
21
+ include ActiveID::Model
22
+ self.table_name = table_name
23
+ attribute :id, attribute_type.new
24
+ attribute :another_uuid, attribute_type.new
25
+ end
26
+
27
+ natural_key_class = Class.new(regular_class) do
28
+ natural_key :title
29
+ end
30
+
31
+ key_with_namescape_class = Class.new(natural_key_class) do
32
+ uuid_namespace "45e676ea-8a43-4ffe-98ca-c142b0062a83" # a random UUID
33
+ end
34
+
35
+ regular_class_name = "#{table_prefix.camelize}UuidArticle"
36
+ Object.const_set regular_class_name, regular_class
37
+ natural_key_class_name = "#{regular_class_name}WithNaturalKey"
38
+ Object.const_set natural_key_class_name, natural_key_class
39
+ key_with_namescape_class_name = "#{regular_class_name}WithNamespace"
40
+ Object.const_set key_with_namescape_class_name, key_with_namescape_class
41
+ end
@@ -0,0 +1,38 @@
1
+ ActiveRecord::Schema.define do
2
+ create_table :articles, force: true do |t|
3
+ t.string :title
4
+ t.text :body
5
+ t.column :some_array, :integer, array: true
6
+
7
+ t.timestamps
8
+ end
9
+
10
+ create_table :binary_uuid_articles, id: false, force: true do |t|
11
+ t.binary :id, limit: 16, primary_key: true
12
+ t.string :title
13
+ t.text :body
14
+ t.binary :another_uuid, limit: 16
15
+
16
+ t.timestamps
17
+ end
18
+
19
+ create_table :string_uuid_articles, id: false, force: true do |t|
20
+ t.string :id, limit: 36, primary_key: true
21
+ t.string :title
22
+ t.text :body
23
+ t.string :another_uuid, limit: 36
24
+
25
+ t.timestamps
26
+ end
27
+
28
+ if ENV["DB"] == "postgresql"
29
+ create_table :native_uuid_articles, id: false, force: true do |t|
30
+ t.uuid :id, primary_key: true
31
+ t.string :title
32
+ t.text :body
33
+ t.uuid :another_uuid
34
+
35
+ t.timestamps
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,70 @@
1
+ require "spec_helper"
2
+
3
+ # Type assertions are necessary because you can't tell UUID and String apart
4
+ # with regular ==.
5
+ RSpec.describe ActiveID::Type do
6
+ let(:uuid) { UUIDTools::UUID.parse(hex_with_dashes) }
7
+ let(:hex_with_dashes) { "472b22d4-9fa3-45c4-86cd-2f2cdf77d485" }
8
+ let(:hex_without_dashes) { hex_with_dashes.delete("-").upcase }
9
+ let(:binary_string) { uuid.raw }
10
+
11
+ describe ActiveID::Type::BinaryUUID do
12
+ let(:instance) { described_class.new }
13
+
14
+ describe "#cast" do
15
+ subject { instance.method(:cast) }
16
+ example { expect(subject.(uuid)).to be_respective_uuid }
17
+ example { expect(subject.(hex_with_dashes)).to be_respective_uuid }
18
+ example { expect(subject.(hex_without_dashes)).to be_respective_uuid }
19
+ example { expect(subject.(nil)).to be(nil) }
20
+ end
21
+
22
+ describe "#serialize" do
23
+ subject { instance.method(:serialize) }
24
+ example { expect(subject.(uuid)).to be_respective_binary }
25
+ example { expect(subject.(nil)).to be(nil) }
26
+ end
27
+
28
+ describe "#deserialize" do
29
+ subject { instance.method(:deserialize) }
30
+ example { expect(subject.(binary_string)).to be_respective_uuid }
31
+ example { expect(subject.(nil)).to be(nil) }
32
+ end
33
+ end
34
+
35
+ describe ActiveID::Type::StringUUID do
36
+ let(:instance) { described_class.new }
37
+
38
+ describe "#cast" do
39
+ subject { instance.method(:cast) }
40
+ example { expect(subject.(uuid)).to be_respective_uuid }
41
+ example { expect(subject.(hex_with_dashes)).to be_respective_uuid }
42
+ example { expect(subject.(hex_without_dashes)).to be_respective_uuid }
43
+ example { expect(subject.(nil)).to be(nil) }
44
+ end
45
+
46
+ describe "#serialize" do
47
+ subject { instance.method(:serialize) }
48
+ example { expect(subject.(uuid)).to be_respective_uuid_string }
49
+ example { expect(subject.(nil)).to be(nil) }
50
+ end
51
+
52
+ describe "#deserialize" do
53
+ subject { instance.method(:deserialize) }
54
+ example { expect(subject.(binary_string)).to be_respective_uuid }
55
+ example { expect(subject.(nil)).to be(nil) }
56
+ end
57
+ end
58
+
59
+ def be_respective_uuid
60
+ eq(uuid) & be_instance_of(UUIDTools::UUID)
61
+ end
62
+
63
+ def be_respective_binary
64
+ eq(binary_string) & be_instance_of(::ActiveRecord::Type::Binary::Data)
65
+ end
66
+
67
+ def be_respective_uuid_string
68
+ eq(hex_with_dashes) & be_instance_of(String)
69
+ end
70
+ end
@@ -0,0 +1,97 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe ActiveID::Utils do
4
+ let(:uuid) { UUIDTools::UUID.parse hex_with_dashes }
5
+ let(:hex_with_dashes) { "472b22d4-9fa3-45c4-86cd-2f2cdf77d485" }
6
+ let(:hex_without_dashes) { hex_with_dashes.delete("-").upcase }
7
+ let(:binary_string) { uuid.raw }
8
+
9
+ describe "#cast_to_uuid" do
10
+ subject { described_class.method(:cast_to_uuid) }
11
+
12
+ it "returns argument itself when UUID instance is given" do
13
+ expect(subject.(uuid)).to be(uuid)
14
+ end
15
+
16
+ it "returns argument itself when nil is given" do
17
+ expect(subject.(nil)).to be(nil)
18
+ end
19
+
20
+ it "returns respective UUID instance when 16 bytes long binary string is " +
21
+ "given" do
22
+ expect(binary_string.size).to eq(16)
23
+ expect(subject.(binary_string)).to eq(uuid)
24
+ end
25
+
26
+ it "returns respective UUID instance when string consisting of " +
27
+ "32 hexadecimal digits and 4 dashes is given" do
28
+ expect(hex_with_dashes.size).to eq(32 + 4)
29
+ expect(subject.(hex_with_dashes)).to eq(uuid)
30
+ expect(subject.(hex_with_dashes.swapcase)).to eq(uuid)
31
+ end
32
+
33
+ it "returns respective UUID instance when string consisting of " +
34
+ "32 hexadecimal digits without dashes is given" do
35
+ expect(hex_with_dashes.size).to eq(32 + 4)
36
+ expect(subject.(hex_without_dashes)).to eq(uuid)
37
+ expect(subject.(hex_without_dashes.swapcase)).to eq(uuid)
38
+ end
39
+
40
+ it "raises an ArgumentError when given sting is neither a 16 bytes long " +
41
+ "binary string nor representation of 32 digits long hexadecimal number" do
42
+
43
+ pending "UUIDTools::UUID is bit too liberal, and sometimes accepts " +
44
+ "malformed input."
45
+
46
+ malformed_uuid_strings = [
47
+ "",
48
+ binary_string[0..-2],
49
+ hex_with_dashes.tr("abcdef", "x"),
50
+ hex_with_dashes.tr("-", "="),
51
+ hex_with_dashes[0..-2],
52
+ hex_with_dashes + "a",
53
+ hex_without_dashes.tr("abcdef", "x"),
54
+ hex_without_dashes[0..-2],
55
+ hex_without_dashes + "a",
56
+ ]
57
+
58
+ malformed_uuid_strings.each do |s|
59
+ expect { subject.(s) }.to(
60
+ raise_error(ArgumentError, /16, 32, or 36/),
61
+ "tested string was: #{s.inspect}"
62
+ )
63
+ end
64
+ end
65
+
66
+ it "raises an ArgumentError when argument is neither UUID, nil, " +
67
+ "nor string" do
68
+ expect { subject.(3) }.to raise_error(ArgumentError)
69
+ expect { subject.([hex_with_dashes]) }.to raise_error(ArgumentError)
70
+ end
71
+ end
72
+
73
+ describe "#quote_as_binary" do
74
+ subject { described_class.method(:quote_as_binary) }
75
+
76
+ it "returns nil for nil" do
77
+ expect(subject.(nil)).to be(nil)
78
+ end
79
+
80
+ it "returns binary data for UUID instance" do
81
+ expect(subject.(uuid)).to be_a_binary_data_containing_uuid
82
+ end
83
+
84
+ it "returns binary data for UUID string" do
85
+ expect(subject.(hex_with_dashes)).to be_a_binary_data_containing_uuid
86
+ expect(subject.(hex_without_dashes)).to be_a_binary_data_containing_uuid
87
+ end
88
+
89
+ it "is also available (delegates) in ActiveID top-level module" do
90
+ expect(ActiveID).to respond_to(:quote_as_binary)
91
+ end
92
+
93
+ def be_a_binary_data_containing_uuid
94
+ be_a(::ActiveRecord::Type::Binary::Data) & eq(binary_string)
95
+ end
96
+ end
97
+ end
metadata ADDED
@@ -0,0 +1,313 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: activeid
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.1
5
+ platform: ruby
6
+ authors:
7
+ - Ribose Inc.
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-05-31 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: database_cleaner
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: fabrication
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: forgery
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.5'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.5'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec-its
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: solid_assert
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: mysql2
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: pg
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: sqlite3
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 1.3.6
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 1.3.6
181
+ - !ruby/object:Gem::Dependency
182
+ name: activerecord
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '5.0'
188
+ - - "<"
189
+ - !ruby/object:Gem::Version
190
+ version: '6.0'
191
+ type: :runtime
192
+ prerelease: false
193
+ version_requirements: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - ">="
196
+ - !ruby/object:Gem::Version
197
+ version: '5.0'
198
+ - - "<"
199
+ - !ruby/object:Gem::Version
200
+ version: '6.0'
201
+ - !ruby/object:Gem::Dependency
202
+ name: uuidtools
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ type: :runtime
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ description: Support for binary UUIDs in ActiveRecord
216
+ email:
217
+ - open.source@ribose.com
218
+ executables: []
219
+ extensions: []
220
+ extra_rdoc_files: []
221
+ files:
222
+ - ".editorconfig"
223
+ - ".github/workflows/macos.yml"
224
+ - ".github/workflows/ubuntu.yml"
225
+ - ".github/workflows/windows.yml"
226
+ - ".gitignore"
227
+ - ".hound.yml"
228
+ - ".rspec"
229
+ - ".rubocop.yml"
230
+ - Gemfile
231
+ - LICENSE.md
232
+ - README.adoc
233
+ - Rakefile
234
+ - activeid.gemspec
235
+ - examples/name_based_uuids.rb
236
+ - examples/registering_active_record_type.rb
237
+ - examples/storing_uuids_as_binaries.rb
238
+ - examples/storing_uuids_as_strings.rb
239
+ - examples/storing_uuids_natively.rb
240
+ - examples/time_based_uuids.rb
241
+ - examples/using_migrations.rb
242
+ - gemfiles/Rails-5_0.gemfile
243
+ - gemfiles/Rails-5_1.gemfile
244
+ - gemfiles/Rails-5_2.gemfile
245
+ - gemfiles/Rails-head.gemfile
246
+ - lib/active_id.rb
247
+ - lib/active_id/all.rb
248
+ - lib/active_id/connection_patches.rb
249
+ - lib/active_id/model.rb
250
+ - lib/active_id/railtie.rb
251
+ - lib/active_id/type.rb
252
+ - lib/active_id/utils.rb
253
+ - lib/active_id/version.rb
254
+ - log/.keep
255
+ - spec/integration/examples_for_uuid_models.rb
256
+ - spec/integration/examples_for_uuid_models_having_namespaces.rb
257
+ - spec/integration/examples_for_uuid_models_having_natural_keys.rb
258
+ - spec/integration/migrations_spec.rb
259
+ - spec/integration/model_without_uuids_spec.rb
260
+ - spec/integration/no_patches_spec.rb
261
+ - spec/integration/storing_uuids_as_binaries_spec.rb
262
+ - spec/integration/storing_uuids_as_strings_spec.rb
263
+ - spec/spec_helper.rb
264
+ - spec/support/0_logger.rb
265
+ - spec/support/1_db_connection.rb
266
+ - spec/support/2_db_cleaner.rb
267
+ - spec/support/database.yml
268
+ - spec/support/fabricators.rb
269
+ - spec/support/models.rb
270
+ - spec/support/schema.rb
271
+ - spec/unit/attribute_type_spec.rb
272
+ - spec/unit/utils_spec.rb
273
+ homepage: https://github.com/riboseinc/activeid
274
+ licenses: []
275
+ metadata: {}
276
+ post_install_message:
277
+ rdoc_options: []
278
+ require_paths:
279
+ - lib
280
+ required_ruby_version: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - ">="
283
+ - !ruby/object:Gem::Version
284
+ version: '0'
285
+ required_rubygems_version: !ruby/object:Gem::Requirement
286
+ requirements:
287
+ - - ">="
288
+ - !ruby/object:Gem::Version
289
+ version: '0'
290
+ requirements: []
291
+ rubygems_version: 3.0.3
292
+ signing_key:
293
+ specification_version: 4
294
+ summary: Support for binary UUIDs in ActiveRecord
295
+ test_files:
296
+ - spec/integration/examples_for_uuid_models.rb
297
+ - spec/integration/examples_for_uuid_models_having_namespaces.rb
298
+ - spec/integration/examples_for_uuid_models_having_natural_keys.rb
299
+ - spec/integration/migrations_spec.rb
300
+ - spec/integration/model_without_uuids_spec.rb
301
+ - spec/integration/no_patches_spec.rb
302
+ - spec/integration/storing_uuids_as_binaries_spec.rb
303
+ - spec/integration/storing_uuids_as_strings_spec.rb
304
+ - spec/spec_helper.rb
305
+ - spec/support/0_logger.rb
306
+ - spec/support/1_db_connection.rb
307
+ - spec/support/2_db_cleaner.rb
308
+ - spec/support/database.yml
309
+ - spec/support/fabricators.rb
310
+ - spec/support/models.rb
311
+ - spec/support/schema.rb
312
+ - spec/unit/attribute_type_spec.rb
313
+ - spec/unit/utils_spec.rb