referehencible 1.0.0 → 1.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a4222bd7eeb1fac746bd1bd821ebfa7ecc67c26a
4
- data.tar.gz: 14d5eaab1feedf806e3557c29ff2f377d09ad41c
3
+ metadata.gz: 5dfa1b825abed0a534976e50febde7707f2a3e44
4
+ data.tar.gz: 285f4e461dd1f13e292b864bb68c304bfbc83033
5
5
  SHA512:
6
- metadata.gz: 46fee4ca2b81fa6578060167c789d38d9ea33590178f14b85ffdff7dc580a83016b123f172ab4bd74455529f2e4d8cf656418629282e3ba16e75d24b1ca233a6
7
- data.tar.gz: 9890f0a9ebadf3644770d81befb8ca8b97724fc7dca20d091d9f54536220e5f76ee579d7b3991b319e38130bfd8501daf096c2a2ff8e5384cdc2be2e08dddf99
6
+ metadata.gz: 46683349d3fd53d5aee7b8739a085054a1391279549dae06f47a5c4140f73aae6fe5a7772adeedd724429a69857908d57fe6a1583971b5555c41d19e2dd2ba20
7
+ data.tar.gz: 8e72ea6c2afe7d433fd545f4477a19235bbc40d3acbd9a843a681b17953b26f63b30453a2b17a298d7983cad815b45becce380e0f08d1f24f76c05b2bd5687c9
@@ -23,10 +23,6 @@ module Referehencible
23
23
  end
24
24
 
25
25
  referenced_attrs.each do |reference_attribute, options|
26
- fail "You attempted to pass in a length of #{options[:length]} for " \
27
- "#{reference_attribute} in #{name}. Only even numbers are allowed." \
28
- if options[:length].odd?
29
-
30
26
  validates reference_attribute,
31
27
  presence: true,
32
28
  uniqueness: true,
@@ -38,27 +34,36 @@ module Referehencible
38
34
  define_method(reference_attribute) do
39
35
  send("generate_#{options[:type]}_guid",
40
36
  reference_attribute,
41
- options[:length] / 2)
37
+ options[:length])
42
38
  end
43
39
 
44
40
  define_singleton_method("by_#{reference_attribute}") do |guid_to_find|
45
41
  where(:"#{reference_attribute}" => guid_to_find).
46
- first ||
47
- unknown_reference_object
42
+ first ||
43
+ unknown_reference_object
48
44
  end
49
45
 
50
46
  after_initialize(lambda do
51
47
  send("generate_#{options[:type]}_guid",
52
48
  reference_attribute,
53
- options[:length] / 2)
49
+ options[:length])
54
50
  end)
55
51
  end
56
52
 
57
53
  private
58
54
 
59
55
  define_method(:generate_hex_guid) do |reference_attribute, length|
60
- read_attribute(reference_attribute) || write_attribute(reference_attribute,
61
- SecureRandom.hex(length))
56
+ hex_length = (length / 2.0 + 1).floor
57
+
58
+ read_attribute(reference_attribute) ||
59
+ write_attribute(reference_attribute,
60
+ SecureRandom.hex(hex_length).slice(0, length))
61
+ end
62
+
63
+ define_method(:generate_base64_guid) do |reference_attribute, length|
64
+ read_attribute(reference_attribute) ||
65
+ write_attribute(reference_attribute,
66
+ SecureRandom.urlsafe_base64(length).slice(0, length))
62
67
  end
63
68
 
64
69
  define_method(:generate_uuid_guid) do |reference_attribute, _length|
@@ -1,3 +1,3 @@
1
1
  module Referehencible
2
- VERSION = '1.0.0'
2
+ VERSION = '1.1.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: referehencible
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - jfelchner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-11 00:00:00.000000000 Z
11
+ date: 2015-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -72,9 +72,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
72
  version: '0'
73
73
  requirements: []
74
74
  rubyforge_project: referehencible
75
- rubygems_version: 2.4.6
75
+ rubygems_version: 2.4.5
76
76
  signing_key:
77
77
  specification_version: 4
78
78
  summary: Enable unique reference numbers on all the things
79
79
  test_files:
80
80
  - spec/lib/referehencible_spec.rb
81
+ has_rdoc: