activeid 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
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