has_token_id 0.2.0 → 0.3.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.
data/README.md CHANGED
@@ -10,7 +10,7 @@ Installation
10
10
  Add has_token_id to your Gemfile like so:
11
11
 
12
12
  ```ruby
13
- gem 'has_token_id', '~> 0.2.0'
13
+ gem 'has_token_id', '~> 0.3.0'
14
14
  ```
15
15
 
16
16
  Now run `bundle install` and you're good to go!
@@ -61,6 +61,8 @@ Try it out in your `rails console`
61
61
  # Iccfa4bb1613e80097ba9495
62
62
  @item == Item.find("Iccfa4bb1613e80097ba9495")
63
63
  # true
64
+ @item.short_token
65
+ # Iccfa4bb
64
66
  ```
65
67
 
66
68
 
@@ -71,10 +73,11 @@ Options
71
73
  You can customize has_token_id by setting a few options. Here's the defaults:
72
74
 
73
75
  ```ruby
74
- :prefix => nil, # if nil use first letter of class name
75
- :length => 24,
76
- :param_name => 'token',
77
- :case_sensitive => false
76
+ :prefix => nil, # if nil use first letter of class name
77
+ :length => 24,
78
+ :short_token_length => 8,
79
+ :param_name => 'token',
80
+ :case_sensitive => false
78
81
  ```
79
82
 
80
83
 
@@ -71,10 +71,16 @@ module HasTokenId
71
71
 
72
72
  module InstanceMethods
73
73
 
74
- def to_param
74
+ def to_param
75
75
  self.send(self.class.has_token_id_options[:param_name])
76
76
  end
77
77
 
78
+ def short_token
79
+ max = self.class.has_token_id_options[:length]
80
+ len = self.class.has_token_id_options[:short_token_length]
81
+ to_param[0, len < max ? len : max]
82
+ end
83
+
78
84
  private
79
85
 
80
86
  def generate_token
@@ -1,3 +1,3 @@
1
1
  module HasTokenId
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
data/lib/has_token_id.rb CHANGED
@@ -19,10 +19,11 @@ module HasTokenId
19
19
 
20
20
  def self.default_token_options
21
21
  @default_token_options ||= {
22
- :prefix => nil, # if nil use first letter of class name
23
- :length => 24,
24
- :param_name => 'token',
25
- :case_sensitive => false
22
+ :prefix => nil, # if nil use first letter of class name
23
+ :length => 24,
24
+ :short_token_length => 8,
25
+ :param_name => 'token',
26
+ :case_sensitive => false
26
27
  }
27
28
  end
28
29
 
@@ -47,7 +47,7 @@ class ConcernTest < MiniTest::Should::TestCase
47
47
  end
48
48
 
49
49
  should "have default options" do
50
- opts = { :prefix => "I", :length => 24, :param_name => "token", :case_sensitive => false }
50
+ opts = { :prefix => "I", :length => 24, :short_token_length => 8, :param_name => "token", :case_sensitive => false }
51
51
  assert_equal opts, Item.has_token_id_options
52
52
  end
53
53
 
@@ -59,6 +59,17 @@ class ConcernTest < MiniTest::Should::TestCase
59
59
  assert_equal @item.to_param, @item.token
60
60
  end
61
61
 
62
+ should "have short token" do
63
+ assert_equal @item.token[0, 8], @item.short_token
64
+ assert_equal 8, @item.short_token.length
65
+ end
66
+
67
+ should "return max token size when short token length is set longer than token length" do
68
+ Item.has_token_id_options.merge!(:short_token_length => 99)
69
+ assert_equal @item.token[0..24], @item.short_token
70
+ assert_equal 24, @item.short_token.length
71
+ end
72
+
62
73
  should "find by token" do
63
74
  assert_equal @item, Item.find(@item.token)
64
75
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_token_id
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-27 00:00:00.000000000Z
12
+ date: 2012-01-31 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
- requirement: &70283871501780 !ruby/object:Gem::Requirement
16
+ requirement: &70314473800600 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70283871501780
24
+ version_requirements: *70314473800600
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &70283871501060 !ruby/object:Gem::Requirement
27
+ requirement: &70314473799680 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 3.0.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70283871501060
35
+ version_requirements: *70314473799680
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rails
38
- requirement: &70283871500300 !ruby/object:Gem::Requirement
38
+ requirement: &70314473798880 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 3.0.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70283871500300
46
+ version_requirements: *70314473798880
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: dummier
49
- requirement: &70283871499760 !ruby/object:Gem::Requirement
49
+ requirement: &70314473798140 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.3.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70283871499760
57
+ version_requirements: *70314473798140
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: minitest
60
- requirement: &70283871499140 !ruby/object:Gem::Requirement
60
+ requirement: &70314473797440 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 2.0.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70283871499140
68
+ version_requirements: *70314473797440
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: minitest_should
71
- requirement: &70283871497700 !ruby/object:Gem::Requirement
71
+ requirement: &70314473796720 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.3.1
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70283871497700
79
+ version_requirements: *70314473796720
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: sqlite3
82
- requirement: &70283871496720 !ruby/object:Gem::Requirement
82
+ requirement: &70314473796060 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: 1.3.5
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70283871496720
90
+ version_requirements: *70314473796060
91
91
  description: Identifies your active records with a random token. For more information,
92
92
  please see the documentation.
93
93
  email:
@@ -128,7 +128,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
128
128
  version: '0'
129
129
  segments:
130
130
  - 0
131
- hash: 2547320390415965778
131
+ hash: -2635183054273131293
132
132
  required_rubygems_version: !ruby/object:Gem::Requirement
133
133
  none: false
134
134
  requirements:
@@ -137,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
137
  version: '0'
138
138
  segments:
139
139
  - 0
140
- hash: 2547320390415965778
140
+ hash: -2635183054273131293
141
141
  requirements: []
142
142
  rubyforge_project:
143
143
  rubygems_version: 1.8.10