aegis_support 0.0.1 → 0.0.2

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
  SHA256:
3
- metadata.gz: c77e86a53ff5e0811169153c2d9d7657c1cc5725ffc5c50fbc887efd30fe97be
4
- data.tar.gz: bf6c63c92af362cbdb4ff8b8da154e4501665150669f316cb644b03ca9315fa0
3
+ metadata.gz: 658fe7dd0b5571c490a5ca53060712b028da1d77cd67daeebfbbd71b6ea2da65
4
+ data.tar.gz: b3f6a4c52809eb5b1b03a05821af9f1eeaf0535599b02976ef1616285151235f
5
5
  SHA512:
6
- metadata.gz: 3d565663fbe59685bec2616bbed2616a285cc225ffc2a82242364b41b5407f5f280d0a3f4dde5299c8c86463c064e4c807d7d2a277af2e52af2bb1f7bc4fa7e2
7
- data.tar.gz: bc4244243aff667b9de0841fb1b7bca66c676214622edb1f6c58d8066ead7abc62875d77a3c628751b28c1248fcc7e15f1e93402756654ee19c743de68cdac4e
6
+ metadata.gz: 6546f8565b05cec91f27e43c5f98d4569a34e00efdd0359fa332b134e58a861633e3238022efcf92724de00f3ff329211291248576b2cbbbe4ba8764056d66de
7
+ data.tar.gz: 1cb35f1f20f90590e7cc392a97c2ff6062881c080b5eac56861205d021572802c7f74065c0fdd671d0a1970986e87487d783c5c12c291ac1704f98d7337f624e
@@ -0,0 +1,28 @@
1
+
2
+ module AegisSupport
3
+ module SecureNumber
4
+ extend ActiveSupport::Concern
5
+
6
+ module ClassMethods
7
+ def has_secure_number(attribute)
8
+ require "securerandom"
9
+
10
+ define_method("regenerate_#{attribute}"){ update! attribute => self.class.generate_secure_number(attribute) }
11
+ before_create{ self.send("#{attribute}=", self.class.generate_secure_number(attribute)) }
12
+ end
13
+
14
+ def generate_secure_number(attribute)
15
+ 10.times do |i|
16
+ # use "4.gigabytes ** 2" just want to generate a random number that maximum length is 20
17
+ secure_number = SecureRandom.random_number(4.gigabytes ** 2).to_s.rjust(20, "0")
18
+
19
+ if exists?(attribute => secure_number)
20
+ raise "Couldn't generate a unique number in 10 attempts!" if i == 9
21
+ else
22
+ break secure_number
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,3 +1,3 @@
1
1
  module AegisSupport
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/aegis_support.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "aegis_support/version"
2
2
  require "aegis_support/railtie"
3
+ require "aegis_support/secure_number"
3
4
 
4
5
  module AegisSupport
5
6
  # Your code goes here...
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aegis_support
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ian
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 7.0.2.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: mocha
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.13.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.13.0
27
41
  description: A helpful collection of utitility for rails application
28
42
  email:
29
43
  - ianlynxk@gmail.com
@@ -36,6 +50,7 @@ files:
36
50
  - Rakefile
37
51
  - lib/aegis_support.rb
38
52
  - lib/aegis_support/railtie.rb
53
+ - lib/aegis_support/secure_number.rb
39
54
  - lib/aegis_support/version.rb
40
55
  - lib/tasks/aegis_support_tasks.rake
41
56
  homepage: https://github.com/otorain/aegis_support