did_token_generator 0.0.1

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.
Files changed (3) hide show
  1. data/README +29 -0
  2. data/lib/token_generator.rb +15 -0
  3. metadata +68 -0
data/README ADDED
@@ -0,0 +1,29 @@
1
+ TokenGenerator
2
+ ==============
3
+
4
+ Mix-in for classes that needs to have a token generated using MD5. You can set the length of the token
5
+ and provide it with an optional block that'll check the validity of the generated token (usually whether it's
6
+ already taken or not).
7
+
8
+ The two methods are generate_token, which will just return a new token, and set_token, which will assume
9
+ that there's a writer for the instance variable "token" and that the class has a "find_by_token" method to check
10
+ validity (if a duplicate exists, generate another token).
11
+
12
+ Examples:
13
+
14
+ class Invitation < ActiveRecord::Base
15
+ include TokenGenerator
16
+ before_create :set_token
17
+ end
18
+
19
+ class ImperialInvitation < ActiveRecord::Base
20
+ include TokenGenerator
21
+ before_create :set_token
22
+
23
+ private
24
+ def set_token
25
+ self.token = generate_token { |token| complies_to_imperial_standards?(token) }
26
+ end
27
+ end
28
+
29
+ Copyright (c) 2005 David Heinemeier Hansson, Marcel Molina Jr. released under the MIT license
@@ -0,0 +1,15 @@
1
+ module TokenGenerator
2
+ def generate_token(size = 12, &validity)
3
+ constant = "#{self.class.name}#{id}"
4
+
5
+ begin
6
+ token = CGI::Session.generate_unique_id(constant).first(size)
7
+ end while !validity.call(token) if block_given?
8
+
9
+ token
10
+ end
11
+
12
+ def set_token
13
+ self.token = generate_token { |token| self.class.find_by_token(token).nil? }
14
+ end
15
+ end
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: did_token_generator
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Rails
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-02-14 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: "Token generator plugin "
23
+ email: didier@nocoffee.fr
24
+ executables: []
25
+
26
+ extensions: []
27
+
28
+ extra_rdoc_files:
29
+ - README
30
+ files:
31
+ - lib/token_generator.rb
32
+ - README
33
+ has_rdoc: true
34
+ homepage: https://github.com/rails/token_generator
35
+ licenses: []
36
+
37
+ post_install_message:
38
+ rdoc_options:
39
+ - --charset=UTF-8
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ hash: 3
48
+ segments:
49
+ - 0
50
+ version: "0"
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 0
59
+ version: "0"
60
+ requirements: []
61
+
62
+ rubyforge_project:
63
+ rubygems_version: 1.4.2
64
+ signing_key:
65
+ specification_version: 3
66
+ summary: Token generator plugin
67
+ test_files: []
68
+