referehencible 0.4.0 → 0.5.0

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
  SHA1:
3
- metadata.gz: 76e7d2d6d28b8eb83da769dc60cdc123643a60f4
4
- data.tar.gz: 950213b9061b6c92b2a975d741b556bf973bfc48
3
+ metadata.gz: 0e249b8aeee7e472b5a9b497b8d49589483d3949
4
+ data.tar.gz: 0d260f6461ccdd619d2600add5211a837d436f91
5
5
  SHA512:
6
- metadata.gz: 1ee35b8dc26e1a11786e100b6344525cce3dfd3470e12b3e63f8c71819d8b09055119cb7405df8cb027fec7b62a2a437fd564e9e40a20b80fbdf3cf6e2d175d2
7
- data.tar.gz: 6d41db6b7bbe1a522d8561b740bd92befa10de32730af788e36e01e30a11da3b6aa96ae16947c9caf3936a20272bf7060f1952f1b45945124acfddf4054dea95
6
+ metadata.gz: 89b0e301762a2e8d111275b448fe7528db28c5ab813115619ce80a87f181f9ac9dfc531eb5cf398d3d421eadfb9ef4a74d8487037eb48872c72120e19cd770cf
7
+ data.tar.gz: 4e19b7e9e7a0f5206224126322f2a76377bcc22edd9d1af8cf93f3098efcd54070f64d3c9e45960554d67d04011681f3c3b360c3e5c0a91f1571fbeb995f1f17
@@ -1,3 +1,3 @@
1
1
  module Referehencible
2
- VERSION = '0.4.0'
2
+ VERSION = '0.5.0'
3
3
  end
@@ -2,11 +2,14 @@ require 'referehencible/version'
2
2
  require 'securerandom'
3
3
 
4
4
  module Referehencible
5
- DEFAULT_LENGTH = 32
5
+ DEFAULT_LENGTH = 36
6
6
 
7
7
  module ClassMethods
8
8
  def referenced_by(*referenced_attributes)
9
- default_options = { length: DEFAULT_LENGTH }
9
+ default_options = {
10
+ length: DEFAULT_LENGTH,
11
+ type: :uuid,
12
+ }
10
13
 
11
14
  referenced_attributes = referenced_attributes.each_with_object({}) do |referenced_attribute, transformed_attributes|
12
15
  case referenced_attribute
@@ -25,12 +28,12 @@ module Referehencible
25
28
  presence: true,
26
29
  uniqueness: true,
27
30
  format: {
28
- with: /[a-f0-9]{#{options[:length]}}/ },
31
+ with: /[a-f0-9\-]{#{options[:length]}}/ },
29
32
  length: {
30
33
  is: options[:length] }
31
34
 
32
35
  define_method(reference_attribute) do
33
- generate_guid(reference_attribute, options[:length] / 2)
36
+ send("generate_#{options[:type]}_guid", reference_attribute, options[:length] / 2)
34
37
  end
35
38
 
36
39
  define_singleton_method("by_#{reference_attribute}") do |guid_to_find|
@@ -39,15 +42,19 @@ module Referehencible
39
42
  unknown_reference_object
40
43
  end
41
44
 
42
- after_initialize lambda { generate_guid reference_attribute, options[:length] / 2 }
45
+ after_initialize lambda { send("generate_#{options[:type]}_guid", reference_attribute, options[:length] / 2) }
43
46
  end
44
47
 
45
48
  private
46
49
 
47
- define_method(:generate_guid) do |reference_attribute, length|
50
+ define_method(:generate_hex_guid) do |reference_attribute, length|
48
51
  read_attribute(reference_attribute) || write_attribute(reference_attribute, SecureRandom.hex(length))
49
52
  end
50
53
 
54
+ define_method(:generate_uuid_guid) do |reference_attribute, length|
55
+ read_attribute(reference_attribute) || write_attribute(reference_attribute, SecureRandom.uuid)
56
+ end
57
+
51
58
  define_singleton_method(:unknown_reference_object) do
52
59
  return new unless respond_to?(:as_null_object)
53
60
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: referehencible
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - jfelchner
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-06-21 00:00:00.000000000 Z
12
+ date: 2014-06-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec