active_record_uuid 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  `active_record_uuid` is a nice gem that add uuid supports to your `activerecord` models (MySQL). It allows you to store uuid in various formats: binary (16 bytes), base64 (24 bytes), hexdigest (32 bytes), or string (36 bytes), and query back with uuid string.
4
4
 
5
+ The performance issues arises when you store primary key in large data size. You have two options:
6
+ - use `auto-increment` primary key along with uuid column
7
+ - use `uuid` primary key, but store in binary format
8
+
9
+ You have various choices when storing uuid:
10
+ - binary format, 16 bytes
11
+ - base64 format, 24 bytes (encode uuid into base64)
12
+ - hexdigest, 32 bytes string (compact uuid format, without dash)
13
+ - string, 36 bytes string (full length uuid)
14
+
15
+ Check this out for more detail, [http://www.mysqlperformanceblog.com/2007/03/13/to-uuid-or-not-to-uuid/](http://www.mysqlperformanceblog.com/2007/03/13/to-uuid-or-not-to-uuid/).
16
+
5
17
  ## Installation
6
18
 
7
19
  Add this line to your application's Gemfile:
@@ -18,7 +30,11 @@ Or install it yourself as:
18
30
 
19
31
  ## Upgrade from version 0.0.1
20
32
 
21
- `ActiveRecordBase::UuidBase` and `UuidBaseHelper` are depreciated. Right now, you can configure your model by using `uuid_config` and inherit from `ActiveRecord::Base`. Check out the usage below.
33
+ `ActiveRecordBase::UuidBase` and `UuidBaseHelper` are depreciated. Right now, you can configure your model by using `has_uuid` and inherit from `ActiveRecord::Base`. Check out the usage below.
34
+
35
+ ## Upgrade from version 0.1.0
36
+
37
+ `uuid_config` is fine, but I like to use `has_uuid` and passing in options instead.
22
38
 
23
39
  ## Usage
24
40
 
@@ -33,46 +49,42 @@ If you need to use `uuid` column as primary key, don't add any `:primary_key` in
33
49
  $ rake db:add_primary_keys # Add primary keys to all models
34
50
  $ rake db:add_primary_key[model_name] # Add primary key to a model
35
51
 
36
- The performance issues arises when you store primary key in large data size. You have two options:
37
- - use `auto-increment` primary key along with uuid column
38
- - use `uuid` primary key, but store in binary format
39
-
40
- You have various choices when storing uuid:
41
- - binary format, 16 bytes
42
- - base64 format, 24 bytes (encode uuid into base64)
43
- - hexdigest, 32 bytes string (compact uuid format, without dash)
44
- - string, 36 bytes string (full length uuid)
45
-
46
52
  ### Migration
47
53
 
48
- In order for the gem to work well, you need to specify the column `type` and `limit` correctly according to your `uuid_config` (`store_as`).
54
+ In order for the gem to work well, you need to specify the column `type` and `limit` correctly according to your `has_uuid` (`store_as` option).
49
55
 
50
56
  create_table :posts, :force => true, :id => false do |t|
51
- t.binary :uuid, :limit => 16 # must set to the correct value
57
+ t.binary :uuid, :limit => 16 # `must set to the correct value`
52
58
  t.string :text
53
59
  t.timestamps
54
60
  end
55
61
 
56
62
  class Post < ActiveRecord::Base
57
- uuid_config do
58
- primary_key true
59
- store_as :binary
60
- end
63
+ has_uuid :primary_key => true, :store_as => :binary
61
64
  end
65
+
66
+ ### General configuration options
62
67
 
63
- ### Configuring your model
68
+ You can configure using `ActiveRecordUuid.configure`, and it will apply to any models which use `has_uuid`. Each model can overwrite the general options by passing options into `has_uuid`. The following are default values:
69
+
70
+ column :uuid # :uuid is default
71
+ primary_key true # false is default
72
+ association false # false is default
73
+ generator :timestamp # :timestamp is default
74
+ store_as :string # :string is default
75
+ hook :before_create # :before_validation is default
76
+
77
+ There's a config generator that generates the default configuration file into config/initializers directory.
78
+ Run the following generator command, then edit the generated file.
64
79
 
65
- To use uuid in your model, call `uuid_config` in your model.
80
+ $ rails g active_record_uuid:config
81
+
82
+ ### Model configuration
83
+
84
+ To use uuid in your model, call `has_uuid` in your model.
66
85
 
67
86
  class Post < ActiveRecord::Base
68
- uuid_config do
69
- column :uuid # :uuid is default
70
- primary_key true # false is default
71
- association false # false is default
72
- generator :timestamp # :timestamp is default
73
- store_as :string # :string is default
74
- hook :before_create # :before_validation is default
75
- end
87
+ has_uuid :primary_key => true, :hook => :before_create
76
88
  end
77
89
 
78
90
  # create a post with auto-generated uuid
@@ -100,10 +112,7 @@ To use uuid in your model, call `uuid_config` in your model.
100
112
  ### Binary uuid model (example)
101
113
 
102
114
  class PostBinary < ActiveRecord::Base
103
- uuid_config do
104
- primary_key true
105
- store_as :binary
106
- end
115
+ has_uuid :primary_key => true, :store_as => :binary
107
116
  end
108
117
 
109
118
  post = PostBinary.create(:text => "Binary uuid1")
@@ -123,7 +132,7 @@ To use uuid in your model, call `uuid_config` in your model.
123
132
  post.reload
124
133
  post.attributes_before_type_cast["uuid"]["value"]
125
134
 
126
- ### Avaliable options inside `uuid_config`
135
+ ### Avaliable options inside `has_uuid`
127
136
  #### `column` option
128
137
 
129
138
  Set the column name to store uuid value.
@@ -149,42 +158,27 @@ Specify the activerecord hook `[:after_initialize, :before_validation, :before_c
149
158
  When you set this option to `true`, it expects you have foreign_keys with `_uuid`. Therefore, you don't have to pass `:foreign_key` option inside association methods
150
159
 
151
160
  class Author < ActiveRecord::Base
152
- uuid_config do
153
- primary_key true
154
- association true
155
- end
161
+ has_uuid :primary_key => true, :association => true
156
162
  has_and_belongs_to_many :posts
157
163
  end
158
164
 
159
165
  class Post < ActiveRecord::Base
160
- uuid_config do
161
- primary_key true
162
- association true
163
- end
166
+ has_uuid :primary_key => true, :association => true
164
167
  has_many :comments
165
168
  has_one :comment
166
169
  has_and_belongs_to_many :authors
167
170
  end
168
171
 
169
172
  class Comment < ActiveRecord::Base
170
- uuid_config do
171
- primary_key true
172
- association true
173
- end
173
+ has_uuid :primary_key => true, :association => true
174
174
  belongs_to :post
175
175
  end
176
176
 
177
177
  # overwrite :foreign_key option and add additional option
178
178
  class Post < ActiveRecord::Base
179
- uuid_config do
180
- primary_key true
181
- association true
182
- end
179
+ has_uuid :primary_key => true, :association => true
183
180
  has_many :comments, :foreign_key => "comment_id", :inverse_of => :post
184
181
  end
185
182
 
186
183
  ## Testing
187
184
  This gem will set the format for dumping the database schema to `:sql`. This means that it is no longer dump the schema to ruby code but database-independent version, `db/structure.sql`. Therefore, you would not have any problems when running the tests.
188
-
189
- ## References
190
- - [http://www.mysqlperformanceblog.com/2007/03/13/to-uuid-or-not-to-uuid/](http://www.mysqlperformanceblog.com/2007/03/13/to-uuid-or-not-to-uuid/)
@@ -7,8 +7,20 @@ module ActiveRecordUuid
7
7
  autoload :VERSION, 'active_record_uuid/version'
8
8
  autoload :Config, 'active_record_uuid/config'
9
9
  autoload :Serializer, 'active_record_uuid/serializer'
10
- autoload :AssociationMethods, 'active_record_uuid/association_methods'
10
+ autoload :AssociationMethods, 'active_record_uuid/extensions/association_methods'
11
+ autoload :QuotingExtension, 'active_record_uuid/extensions/quoting_extension'
11
12
  autoload :Model, 'active_record_uuid/model'
13
+ autoload :Hooks, 'active_record_uuid/hooks'
14
+
15
+ def self.configure(&block)
16
+ @config = ActiveRecordUuid::Config.new
17
+ @config.instance_eval(&block)
18
+ @config.validate_options!
19
+ end
20
+
21
+ def self.config
22
+ @config || ActiveRecordUuid::Config.new
23
+ end
12
24
  end
13
25
 
14
26
  require 'active_record_uuid/uuid_base'
@@ -1,22 +1,37 @@
1
1
  module ActiveRecordUuid
2
2
  class Config
3
- def initialize
4
- @column = :uuid
5
- @primary_key = false
6
- @association = false
7
- @generator = :timestamp
8
- @store_as = :string
9
- @hook = :before_validation
3
+ def initialize(options = {})
4
+ default_options = {
5
+ :column => :uuid,
6
+ :primary_key => false,
7
+ :association => false,
8
+ :generator => :timestamp,
9
+ :store_as => :string,
10
+ :hook => :before_validation
11
+ }
12
+ options = default_options.merge(options)
13
+
14
+ options.each_pair do |key, value|
15
+ send(key.to_sym, value)
16
+ end
10
17
  end
11
18
 
12
19
  METHODS = [:column, :primary_key, :association, :generator, :store_as, :hook]
13
20
  METHODS.each do |meth|
14
21
  define_method(meth.to_sym) do |value=nil|
15
- instance_variable_set("@#{meth}".to_sym, value) if value
22
+ instance_variable_set("@#{meth}".to_sym, value) if value.to_s.present?
16
23
  instance_variable_get("@#{meth}")
17
24
  end
18
25
  end
19
26
 
27
+ def to_hash
28
+ METHODS.inject({}) do |result, key|
29
+ result[key] = send(key)
30
+
31
+ result
32
+ end
33
+ end
34
+
20
35
  def validate_options!
21
36
  default_generators = [:timestamp, :random]
22
37
  raise ArgumentError,
@@ -14,7 +14,7 @@ module ActiveRecordUuid
14
14
 
15
15
  case column.type
16
16
  when :binary
17
- "BINARY x'#{uuid.hexdigest}'"
17
+ "x'#{uuid.hexdigest}'"
18
18
  when :string
19
19
  case column.limit
20
20
  when 24
@@ -0,0 +1,10 @@
1
+ module ActiveRecordUuid
2
+ class Hooks
3
+ def self.init
4
+ ActiveSupport.on_load(:active_record) do |app|
5
+ ::ActiveRecord::Base.connection.class.send :include, ActiveRecordUuid::QuotingExtension
6
+ ::ActiveRecord::Base.send(:include, ActiveRecordUuid::Model)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -27,12 +27,16 @@ module ActiveRecordUuid::Model
27
27
  end
28
28
 
29
29
  private
30
+ def uuid_config
31
+ self.class.uuid_config
32
+ end
33
+
30
34
  def assign_uuid_when_blank
31
35
  assign_uuid if uuid_value.blank?
32
36
  end
33
37
 
34
38
  def uuid_column
35
- self.class.uuid_config.column
39
+ uuid_config.column
36
40
  end
37
41
 
38
42
  def validates_uuid
@@ -40,27 +44,37 @@ module ActiveRecordUuid::Model
40
44
  end
41
45
  end
42
46
 
43
- module ClassMethods
47
+ module ClassMethods
48
+ def generate_uuid
49
+ UUIDTools::UUID.send("#{uuid_config.generator}_create").to_s
50
+ end
51
+
44
52
  def uuid_config(&block)
45
- return @config if @config.present?
53
+ return @uuid_config if @uuid_config.present?
46
54
 
47
- @config = ActiveRecordUuid::Config.new
48
- @config.instance_eval(&block) if block_given?
49
- @config.validate_options!
50
-
51
- column_name = @config.column.to_sym
52
- self.primary_key = column_name if @config.primary_key
53
- self.serialize column_name, ActiveRecordUuid::Serializer.new(@config.store_as)
54
- self.send(@config.hook, :assign_uuid_when_blank)
55
- self.validates_uniqueness_of column_name, :if => Proc.new { |r| r.uuid_value.present? }
56
- self.validate :validates_uuid , :if => Proc.new { |r| r.uuid_value.present? }
57
- self.send(:extend, ActiveRecordUuid::AssociationMethods) if @config.association
55
+ @uuid_config = ActiveRecordUuid::Config.new
56
+ if block_given?
57
+ @uuid_config.instance_eval(&block)
58
+ @uuid_config.validate_options!
59
+ end
58
60
 
59
- @config
61
+ # apply uuid based on config
62
+ has_uuid(@uuid_config.to_hash)
63
+
64
+ @uuid_config
60
65
  end
61
66
 
62
- def generate_uuid
63
- UUIDTools::UUID.send("#{uuid_config.generator}_create").to_s
67
+ def has_uuid(options = {})
68
+ options = ActiveRecordUuid.config.to_hash.merge(options)
69
+ @uuid_config = ActiveRecordUuid::Config.new(options)
70
+
71
+ column_name = uuid_config.column.to_sym
72
+ self.primary_key = column_name if uuid_config.primary_key
73
+ self.serialize column_name, ActiveRecordUuid::Serializer.new(uuid_config.store_as)
74
+ self.send(uuid_config.hook, :assign_uuid_when_blank)
75
+ self.validates_uniqueness_of column_name, :if => Proc.new { |r| r.uuid_value.present? }
76
+ self.validate :validates_uuid, :if => Proc.new { |r| r.uuid_value.present? }
77
+ self.send(:extend, ActiveRecordUuid::AssociationMethods) if uuid_config.association
64
78
  end
65
79
  end
66
80
  end
@@ -0,0 +1,16 @@
1
+ module ActiveRecordUuid
2
+ module Generators
3
+ class ConfigGenerator < Rails::Generators::Base
4
+ source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
5
+
6
+ desc <<DESC
7
+ Description:
8
+ Copies ActiveRecordUuid configuration file to your application's initializer directory.
9
+ DESC
10
+
11
+ def copy_config_file
12
+ template 'active_record_uuid_config.rb', 'config/initializers/active_record_uuid_config.rb'
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,8 @@
1
+ ActiveRecordUuid.configure do
2
+ # column :uuid
3
+ # primary_key false
4
+ # association false
5
+ # generator :timestamp
6
+ # store_as :string
7
+ # hook :before_validation
8
+ end
@@ -3,17 +3,15 @@ module ActiveRecordUuid
3
3
  config.active_record.schema_format = :sql
4
4
 
5
5
  initializer :after => 'active_record.initialize_database' do
6
-
7
- ActiveSupport.on_load(:active_record) do |app|
8
- require 'active_record_uuid/extensions/quoting_extension'
9
-
10
- ::ActiveRecord::Base.connection.class.send :include, ActiveRecordUuid::QuotingExtension
11
- ::ActiveRecord::Base.send(:include, ActiveRecordUuid::Model)
12
- end
6
+ ActiveRecordUuid::Hooks.init
13
7
  end
14
8
 
15
9
  rake_tasks do
16
10
  load "active_record_uuid/rails/db.rake"
17
11
  end
12
+
13
+ generators do
14
+ require 'active_record_uuid/rails/generators/config_generator'
15
+ end
18
16
  end
19
17
  end
@@ -4,7 +4,7 @@ class ActiveRecord::UuidBase < ::ActiveRecord::Base
4
4
  class << self
5
5
  def inherited_with_uuid(kls)
6
6
  inherited_without_uuid kls
7
- warn "[DEPRECATION] `UuidBaseHelper` and `ActiveRecord::UuidBase` are deprecated. Please inherit from `ActiveRecord::Base` and use `uuid_config` instead."
7
+ warn "[DEPRECATION] `UuidBaseHelper` and `ActiveRecord::UuidBase` are deprecated. Please inherit from `ActiveRecord::Base` and use `has_uuid` instead."
8
8
  kls.uuid_config do
9
9
  primary_key true
10
10
  association true
@@ -15,7 +15,7 @@ class ActiveRecord::UuidBase < ::ActiveRecord::Base
15
15
  end
16
16
 
17
17
  self.descendants.each do |kls|
18
- warn "[DEPRECATION] `UuidBaseHelper` and `ActiveRecord::UuidBase` are deprecated. Please inherit from `ActiveRecord::Base` and use `uuid_config` instead."
18
+ warn "[DEPRECATION] `UuidBaseHelper` and `ActiveRecord::UuidBase` are deprecated. Please inherit from `ActiveRecord::Base` and use `has_uuid` instead."
19
19
  kls.uuid_config do
20
20
  primary_key true
21
21
  association true
@@ -1,6 +1,6 @@
1
1
  module UuidBaseHelper
2
2
  def self.included(base)
3
- warn "[DEPRECATION] `UuidBaseHelper` and `ActiveRecord::UuidBase` are deprecated. Please inherit from `ActiveRecord::Base` and use `uuid_config` instead."
3
+ warn "[DEPRECATION] `UuidBaseHelper` and `ActiveRecord::UuidBase` are deprecated. Please inherit from `ActiveRecord::Base` and use `has_uuid` instead."
4
4
 
5
5
  base.send(:include, ActiveRecordUuid::Model)
6
6
  base.uuid_config do
@@ -1,3 +1,3 @@
1
1
  module ActiveRecordUuid
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -12,6 +12,13 @@ describe "Uuid Config" do
12
12
  @config.hook.should eq(:before_validation)
13
13
  end
14
14
 
15
+ it "should initialize with provided values" do
16
+ @config = ActiveRecordUuid::Config.new(:primary_key => true, :column => :my_uuid)
17
+
18
+ @config.primary_key.should eq(true)
19
+ @config.column.should eq(:my_uuid)
20
+ end
21
+
15
22
  it "should validate options: generator" do
16
23
  @config = ActiveRecordUuid::Config.new
17
24
 
@@ -38,4 +45,13 @@ describe "Uuid Config" do
38
45
  @config.validate_options!
39
46
  }.should raise_error ArgumentError, /^Expected :before_validation/
40
47
  end
48
+
49
+ it "should return as a hash with appropriate value" do
50
+ @config = ActiveRecordUuid::Config.new(:primary_key => true, :column => :my_uuid)
51
+
52
+ hash = @config.to_hash
53
+ hash.should be_instance_of(Hash)
54
+ hash[:primary_key].should eq(@config.primary_key)
55
+ hash[:column].should eq(@config.column)
56
+ end
41
57
  end
@@ -0,0 +1,59 @@
1
+ require 'spec_helper'
2
+
3
+ describe "has_uuid spec" do
4
+ context "per model" do
5
+ it "should have uuid as primary key based config" do
6
+ People.primary_key.should eq('uuid')
7
+ end
8
+
9
+ it "should store uuid as binary" do
10
+ person = People.create(:name => "Binary name1")
11
+ person.reload
12
+
13
+ person.attributes_before_type_cast["uuid"]["value"].bytesize.should eq(16)
14
+ end
15
+
16
+ it "should find by uuid column" do
17
+ person = People.create(:name => "Binary name2")
18
+
19
+ People.find_by_uuid(person.uuid).should eq(person)
20
+ People.where(:uuid => person.uuid).should eq([person])
21
+ end
22
+ end
23
+
24
+ context "global" do
25
+ before(:all) do
26
+ ActiveRecordUuid.configure do
27
+ column :uuid
28
+ primary_key true
29
+ association false
30
+ store_as :binary
31
+ end
32
+
33
+ class PeopleBinary < ActiveRecord::Base
34
+ self.table_name = "people"
35
+ has_uuid :association => true
36
+ has_many :comments
37
+ end
38
+ end
39
+
40
+ it "should use global configuration" do
41
+ PeopleBinary.uuid_config.store_as.should eq(:binary)
42
+ end
43
+
44
+ it "should use overwrite global configuration" do
45
+ PeopleBinary.uuid_config.association.should eq(true)
46
+ end
47
+
48
+ it "should apply based on configuration" do
49
+ PeopleBinary.reflections[:comments].options[:foreign_key].should eq("people_binary_uuid")
50
+ end
51
+
52
+ it "should store uuid as binary" do
53
+ person = PeopleBinary.create!(:name => "Binary name1")
54
+ person.reload
55
+
56
+ person.attributes_before_type_cast["uuid"]["value"].bytesize.should eq(16)
57
+ end
58
+ end
59
+ end
data/spec/spec_helper.rb CHANGED
@@ -4,7 +4,7 @@ db_config = {
4
4
  :adapter => "mysql2",
5
5
  :database => "active_record_uuid",
6
6
  :user => "root",
7
- :password => "Q1p2m3g4"
7
+ :password => ""
8
8
  }
9
9
 
10
10
  ActiveRecord::Base.establish_connection(db_config) rescue nil
@@ -13,10 +13,8 @@ ActiveRecord::Base.establish_connection(db_config.merge(:database => nil))
13
13
  ActiveRecord::Base.connection.create_database(db_config[:database], { :charset => 'utf8', :collation => 'utf8_unicode_ci' })
14
14
  ActiveRecord::Base.establish_connection(db_config)
15
15
 
16
- # load extension
17
- require 'active_record_uuid/extensions/quoting_extension'
18
- ::ActiveRecord::Base.connection.class.send :include, ActiveRecordUuid::QuotingExtension
19
- ::ActiveRecord::Base.send(:include, ActiveRecordUuid::Model)
16
+ # load hooks
17
+ ActiveRecordUuid::Hooks.init
20
18
 
21
19
  # load support
22
20
  load File.dirname(__FILE__) + '/support/schema.rb'
@@ -30,6 +30,11 @@ class PostBinary < ActiveRecord::Base
30
30
  has_many :comments
31
31
  end
32
32
 
33
+ class People < ActiveRecord::Base
34
+ self.table_name = "people"
35
+ has_uuid :column => :uuid, :primary_key => true, :store_as => :binary
36
+ end
37
+
33
38
  class PostBase64 < ActiveRecord::Base
34
39
  uuid_config do
35
40
  primary_key true
@@ -19,6 +19,12 @@ ActiveRecord::Schema.define do
19
19
  t.timestamps
20
20
  end
21
21
 
22
+ create_table :people, :force => true, :id => false do |t|
23
+ t.binary :uuid, :limit => 16
24
+ t.string :name
25
+ t.timestamps
26
+ end
27
+
22
28
  create_table :post_base64s, :force => true, :id => false do |t|
23
29
  t.string :uuid, :limit => 24
24
30
  t.string :text
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record_uuid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-20 00:00:00.000000000 Z
12
+ date: 2012-07-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -126,11 +126,14 @@ files:
126
126
  - Rakefile
127
127
  - active_record_uuid.gemspec
128
128
  - lib/active_record_uuid.rb
129
- - lib/active_record_uuid/association_methods.rb
130
129
  - lib/active_record_uuid/config.rb
130
+ - lib/active_record_uuid/extensions/association_methods.rb
131
131
  - lib/active_record_uuid/extensions/quoting_extension.rb
132
+ - lib/active_record_uuid/hooks.rb
132
133
  - lib/active_record_uuid/model.rb
133
134
  - lib/active_record_uuid/rails/db.rake
135
+ - lib/active_record_uuid/rails/generators/config_generator.rb
136
+ - lib/active_record_uuid/rails/generators/templates/active_record_uuid_config.rb
134
137
  - lib/active_record_uuid/rails/railtie.rb
135
138
  - lib/active_record_uuid/serializer.rb
136
139
  - lib/active_record_uuid/uuid_base.rb
@@ -141,6 +144,7 @@ files:
141
144
  - spec/lib/binary_uuid_spec.rb
142
145
  - spec/lib/config_spec.rb
143
146
  - spec/lib/deprecation_spec.rb
147
+ - spec/lib/has_uuid_spec.rb
144
148
  - spec/lib/hexdigest_uuid_spec.rb
145
149
  - spec/lib/serializer_spec.rb
146
150
  - spec/lib/string_uuid_spec.rb
@@ -178,6 +182,7 @@ test_files:
178
182
  - spec/lib/binary_uuid_spec.rb
179
183
  - spec/lib/config_spec.rb
180
184
  - spec/lib/deprecation_spec.rb
185
+ - spec/lib/has_uuid_spec.rb
181
186
  - spec/lib/hexdigest_uuid_spec.rb
182
187
  - spec/lib/serializer_spec.rb
183
188
  - spec/lib/string_uuid_spec.rb