referehencible 1.0.0 → 1.1.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: 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: