has_token_on 0.2.0 → 1.0.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/.gitignore +1 -0
- data/README.md +2 -2
- data/Rakefile +1 -1
- data/has_token_on.gemspec +3 -1
- data/lib/has_token_on/models/active_record.rb +4 -136
- data/lib/has_token_on/models/base.rb +149 -0
- data/lib/has_token_on/models/mongoid.rb +20 -0
- data/lib/has_token_on/rails.rb +5 -0
- data/lib/has_token_on/version.rb +1 -1
- data/spec/has_token_on/active_record_spec.rb +31 -0
- data/spec/has_token_on/{has_token_on_spec.rb → base_spec.rb} +3 -36
- data/spec/has_token_on/mongoid_spec.rb +30 -0
- data/spec/spec_helper.rb +3 -0
- metadata +132 -112
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# HasTokenOn
|
2
2
|
|
3
|
-
Simple yet customizable token generator for Rails 3
|
3
|
+
Simple yet customizable token generator for Rails 3.
|
4
4
|
|
5
5
|
# Features
|
6
6
|
|
@@ -106,7 +106,7 @@ has_token_on comes with a generator that generates a migration for token.
|
|
106
106
|
|
107
107
|
# Testing
|
108
108
|
|
109
|
-
Tested on Mac OS X with Ruby 1.9.2
|
109
|
+
Tested on Mac OS X with Ruby 1.9.2. Should work on Ruby 1.8.7+.
|
110
110
|
|
111
111
|
* Enter gem directory
|
112
112
|
* Execute
|
data/Rakefile
CHANGED
data/has_token_on.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
|
21
21
|
|
22
22
|
s.add_dependency 'rails', ['>= 3.0.0']
|
23
|
-
s.
|
23
|
+
s.add_development_dependency 'simple_uuid'
|
24
24
|
s.add_development_dependency 'sqlite3', ['>= 0']
|
25
25
|
s.add_development_dependency 'rspec', ['>= 2.0.0']
|
26
26
|
s.add_development_dependency 'mocha', ['>= 0.9.8']
|
@@ -30,4 +30,6 @@ Gem::Specification.new do |s|
|
|
30
30
|
s.add_development_dependency 'growl', ['>= 0']
|
31
31
|
s.add_development_dependency 'rb-fsevent', ['>= 0']
|
32
32
|
s.add_development_dependency 'ruby-debug19', ['>= 0']
|
33
|
+
s.add_development_dependency 'mongoid', ['>= 2']
|
34
|
+
s.add_development_dependency 'bson_ext', ['>= 1.3.1']
|
33
35
|
end
|
@@ -1,149 +1,17 @@
|
|
1
|
-
|
1
|
+
require 'has_token_on/models/base'
|
2
2
|
|
3
3
|
module HasTokenOn
|
4
|
-
|
5
|
-
class LibraryNotPresent < StandardError #:nodoc:
|
6
|
-
end
|
7
|
-
|
8
4
|
module ActiveRecord
|
9
5
|
extend ActiveSupport::Concern
|
10
|
-
|
11
|
-
included do
|
12
|
-
after_initialize { |record| create_tokens(record, :initialize) }
|
13
|
-
before_create { |record| create_tokens(record, :create) }
|
14
|
-
before_update { |record| create_tokens(record, :update) }
|
15
|
-
end
|
16
|
-
|
17
|
-
module ClassMethods
|
18
|
-
# = has_token_on
|
19
|
-
#
|
20
|
-
# Simple yet customizable token generator
|
21
|
-
#
|
22
|
-
# == Declaration
|
23
|
-
#
|
24
|
-
# Declare this in your model to generate token on specified attributes. Declaration can either be:
|
25
|
-
#
|
26
|
-
# For single token with configuration:
|
27
|
-
#
|
28
|
-
# has_token_on :slug, :length => 3
|
29
|
-
#
|
30
|
-
# For multiple tokens with same configuration:
|
31
|
-
#
|
32
|
-
# has_token_on [:slug, :permalink], :length => 3
|
33
|
-
#
|
34
|
-
# For multiple tokens with individual configurations:
|
35
|
-
#
|
36
|
-
# has_token_on :slug, :length => 3
|
37
|
-
# has_token_on :permalink, :length => 5
|
38
|
-
#
|
39
|
-
# Or using single hash:
|
40
|
-
#
|
41
|
-
# has_token_on :slug => { :length => 3 }, :permalink => { :length => 5 }
|
42
|
-
#
|
43
|
-
# == Options
|
44
|
-
#
|
45
|
-
# * :length - length of the token to generate
|
46
|
-
# * :prepend - prepend something to the token string
|
47
|
-
# * :append - append something to the token string
|
48
|
-
# * :unique - should the token be unique among other record's tokens
|
49
|
-
# * :if - sets the token only if Proc passed to this option returns true
|
50
|
-
# * :on - specify when to set the token, possible options are: :initialize, :create, :update
|
51
|
-
# * :seed - elements or functions used to generate hash. Possible options:
|
52
|
-
# * :securerandom (default) uses ActiveSupport::SecureRandom.hex
|
53
|
-
# * :guid uses simple_uuid gem (add it to your Gemfile!).
|
54
|
-
# Length is ignored in this case. GUIDs are 36 characters long.
|
55
|
-
# * ('a'..'z') a Range. Mixes the range elements up to specified length.
|
56
|
-
# * lambda { 2 * 2 } a Proc. Executes proc, length param is ignored in this case.
|
57
|
-
#
|
58
|
-
def has_token_on(*args)
|
59
|
-
@tokens ||= {}
|
60
|
-
|
61
|
-
case args.first
|
62
|
-
when String, Symbol
|
63
|
-
@tokens[args.first] = args.last
|
64
|
-
when Hash
|
65
|
-
args.first.each { |token, config|
|
66
|
-
@tokens[token] = config
|
67
|
-
}
|
68
|
-
when Array
|
69
|
-
args.first.each { |token|
|
70
|
-
@tokens[token] = args.last
|
71
|
-
}
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
# Returns Hash of tokens that are configured for specific class
|
76
|
-
def tokens
|
77
|
-
@tokens
|
78
|
-
end
|
79
|
-
|
80
|
-
end
|
6
|
+
include HasTokenOn::Base
|
81
7
|
|
82
8
|
module InstanceMethods
|
83
9
|
|
84
10
|
private
|
85
11
|
|
86
|
-
def
|
87
|
-
|
88
|
-
|
89
|
-
tokens_to_build_on(callback).each do |token, config|
|
90
|
-
if !config.has_key?(:if) or (config.has_key?(:if) and config[:if].call(record))
|
91
|
-
begin
|
92
|
-
self[token] = build_token(config)
|
93
|
-
end while (config.has_key?(:unique) and config[:unique]) and self.class.exists?(token => self[token])
|
94
|
-
end
|
95
|
-
end
|
12
|
+
def token_is_nonunique?(token)
|
13
|
+
self.class.exists?(token => self[token])
|
96
14
|
end
|
97
|
-
|
98
|
-
def build_token(config)
|
99
|
-
defaults = { :length => 16, :prepend => "", :append => "", :seed => :securerandom }
|
100
|
-
config = defaults.merge(config)
|
101
|
-
|
102
|
-
return [config[:prepend],
|
103
|
-
build_from_seed(config),
|
104
|
-
config[:append]
|
105
|
-
].join
|
106
|
-
end
|
107
|
-
|
108
|
-
def build_from_seed(config)
|
109
|
-
case config[:seed]
|
110
|
-
when Symbol
|
111
|
-
if config[:seed] == :securerandom
|
112
|
-
ActiveSupport::SecureRandom.hex(config[:length]).first(config[:length])
|
113
|
-
elsif config[:seed] == :guid
|
114
|
-
if simple_uuid_present?
|
115
|
-
::SimpleUUID::UUID.new.to_guid
|
116
|
-
else
|
117
|
-
raise LibraryNotPresent, "Supporting library SimpleUUID is not present. Add it to your Gemfile?"
|
118
|
-
end
|
119
|
-
end
|
120
|
-
when Range
|
121
|
-
chars = config[:seed].to_a
|
122
|
-
(0...config[:length]).collect { chars[Kernel.rand(chars.length)] }.join
|
123
|
-
when Proc
|
124
|
-
config[:seed].call.to_s
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
def any_tokens?
|
129
|
-
self.class.tokens && self.class.tokens.any?
|
130
|
-
end
|
131
|
-
|
132
|
-
def tokens_to_build_on(callback)
|
133
|
-
self.class.tokens.select{ |token, config|
|
134
|
-
if config.has_key?(:on)
|
135
|
-
config[:on].include?(callback)
|
136
|
-
else
|
137
|
-
# if user didn't specify :on we set token before record create
|
138
|
-
callback == :create
|
139
|
-
end
|
140
|
-
}
|
141
|
-
end
|
142
|
-
|
143
|
-
def simple_uuid_present?
|
144
|
-
defined? ::SimpleUUID
|
145
|
-
end
|
146
|
-
|
147
15
|
end
|
148
16
|
end
|
149
17
|
end
|
@@ -0,0 +1,149 @@
|
|
1
|
+
begin; require 'simple_uuid'; rescue LoadError; end
|
2
|
+
|
3
|
+
module HasTokenOn
|
4
|
+
|
5
|
+
class LibraryNotPresent < StandardError #:nodoc:
|
6
|
+
end
|
7
|
+
|
8
|
+
module Base
|
9
|
+
extend ActiveSupport::Concern
|
10
|
+
|
11
|
+
included do
|
12
|
+
after_initialize { |record| create_tokens(record, :initialize) }
|
13
|
+
before_create { |record| create_tokens(record, :create) }
|
14
|
+
before_update { |record| create_tokens(record, :update) }
|
15
|
+
end
|
16
|
+
|
17
|
+
module ClassMethods
|
18
|
+
# = has_token_on
|
19
|
+
#
|
20
|
+
# Simple yet customizable token generator
|
21
|
+
#
|
22
|
+
# == Declaration
|
23
|
+
#
|
24
|
+
# Declare this in your model to generate token on specified attributes. Declaration can either be:
|
25
|
+
#
|
26
|
+
# For single token with configuration:
|
27
|
+
#
|
28
|
+
# has_token_on :slug, :length => 3
|
29
|
+
#
|
30
|
+
# For multiple tokens with same configuration:
|
31
|
+
#
|
32
|
+
# has_token_on [:slug, :permalink], :length => 3
|
33
|
+
#
|
34
|
+
# For multiple tokens with individual configurations:
|
35
|
+
#
|
36
|
+
# has_token_on :slug, :length => 3
|
37
|
+
# has_token_on :permalink, :length => 5
|
38
|
+
#
|
39
|
+
# Or using single hash:
|
40
|
+
#
|
41
|
+
# has_token_on :slug => { :length => 3 }, :permalink => { :length => 5 }
|
42
|
+
#
|
43
|
+
# == Options
|
44
|
+
#
|
45
|
+
# * :length - length of the token to generate
|
46
|
+
# * :prepend - prepend something to the token string
|
47
|
+
# * :append - append something to the token string
|
48
|
+
# * :unique - should the token be unique among other record's tokens
|
49
|
+
# * :if - sets the token only if Proc passed to this option returns true
|
50
|
+
# * :on - specify when to set the token, possible options are: :initialize, :create, :update
|
51
|
+
# * :seed - elements or functions used to generate hash. Possible options:
|
52
|
+
# * :securerandom (default) uses ActiveSupport::SecureRandom.hex
|
53
|
+
# * :guid uses simple_uuid gem (add it to your Gemfile!).
|
54
|
+
# Length is ignored in this case. GUIDs are 36 characters long.
|
55
|
+
# * ('a'..'z') a Range. Mixes the range elements up to specified length.
|
56
|
+
# * lambda { 2 * 2 } a Proc. Executes proc, length param is ignored in this case.
|
57
|
+
#
|
58
|
+
def has_token_on(*args)
|
59
|
+
@tokens ||= {}
|
60
|
+
|
61
|
+
case args.first
|
62
|
+
when String, Symbol
|
63
|
+
@tokens[args.first] = args.last.kind_of?(Symbol) ? {} : args.last
|
64
|
+
when Hash
|
65
|
+
args.first.each { |token, config|
|
66
|
+
@tokens[token] = config
|
67
|
+
}
|
68
|
+
when Array
|
69
|
+
args.first.each { |token|
|
70
|
+
@tokens[token] = args.last
|
71
|
+
}
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# Returns Hash of tokens that are configured for specific class
|
76
|
+
def tokens
|
77
|
+
@tokens
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
module InstanceMethods
|
83
|
+
|
84
|
+
private
|
85
|
+
|
86
|
+
def create_tokens(record, callback)
|
87
|
+
return unless any_tokens?
|
88
|
+
|
89
|
+
tokens_to_build_on(callback).each do |token, config|
|
90
|
+
if !config.has_key?(:if) or (config.has_key?(:if) and config[:if].call(record))
|
91
|
+
begin
|
92
|
+
self[token] = build_token(config)
|
93
|
+
end while (config.has_key?(:unique) and config[:unique]) and token_is_nonunique?(token)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def build_token(config)
|
99
|
+
defaults = { :length => 16, :prepend => "", :append => "", :seed => :securerandom }
|
100
|
+
config = defaults.merge(config)
|
101
|
+
|
102
|
+
return [config[:prepend],
|
103
|
+
build_from_seed(config),
|
104
|
+
config[:append]
|
105
|
+
].join
|
106
|
+
end
|
107
|
+
|
108
|
+
def build_from_seed(config)
|
109
|
+
case config[:seed]
|
110
|
+
when Symbol
|
111
|
+
if config[:seed] == :securerandom
|
112
|
+
SecureRandom.hex(config[:length]).first(config[:length])
|
113
|
+
elsif config[:seed] == :guid
|
114
|
+
if simple_uuid_present?
|
115
|
+
::SimpleUUID::UUID.new.to_guid
|
116
|
+
else
|
117
|
+
raise LibraryNotPresent, "Supporting library SimpleUUID is not present. Add it to your Gemfile?"
|
118
|
+
end
|
119
|
+
end
|
120
|
+
when Range
|
121
|
+
chars = config[:seed].to_a
|
122
|
+
(0...config[:length]).collect { chars[Kernel.rand(chars.length)] }.join
|
123
|
+
when Proc
|
124
|
+
config[:seed].call.to_s
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def any_tokens?
|
129
|
+
self.class.tokens && self.class.tokens.any?
|
130
|
+
end
|
131
|
+
|
132
|
+
def tokens_to_build_on(callback)
|
133
|
+
self.class.tokens.select{ |token, config|
|
134
|
+
if config.has_key?(:on)
|
135
|
+
config[:on].include?(callback)
|
136
|
+
else
|
137
|
+
# if user didn't specify :on we set token before record create
|
138
|
+
callback == :create
|
139
|
+
end
|
140
|
+
}
|
141
|
+
end
|
142
|
+
|
143
|
+
def simple_uuid_present?
|
144
|
+
defined? ::SimpleUUID
|
145
|
+
end
|
146
|
+
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'has_token_on/models/base'
|
2
|
+
require 'mongoid'
|
3
|
+
|
4
|
+
module HasTokenOn
|
5
|
+
module Mongoid
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
include HasTokenOn::Base
|
8
|
+
|
9
|
+
module InstanceMethods
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def token_is_nonunique?(token)
|
14
|
+
self.class.first(:conditions => { token => self[token] }).present?
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
::Mongoid::Document.send :include, HasTokenOn::Mongoid
|
data/lib/has_token_on/rails.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'rails'
|
2
|
+
begin; require 'mongoid'; rescue LoadError; end
|
2
3
|
|
3
4
|
module HasTokenOn
|
4
5
|
class Engine < ::Rails::Engine #:nodoc:
|
@@ -11,6 +12,10 @@ module HasTokenOn
|
|
11
12
|
::ActiveSupport.on_load(:active_record) do
|
12
13
|
require File.join(File.dirname(__FILE__), 'models/active_record')
|
13
14
|
end
|
15
|
+
|
16
|
+
if defined? ::Mongoid
|
17
|
+
require File.join(File.dirname(__FILE__), 'models/mongoid')
|
18
|
+
end
|
14
19
|
end
|
15
20
|
end
|
16
21
|
end
|
data/lib/has_token_on/version.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
require File.expand_path('../spec_helper', File.dirname(__FILE__))
|
2
|
+
|
3
|
+
describe HasTokenOn::ActiveRecord do
|
4
|
+
subject { Post.new }
|
5
|
+
|
6
|
+
with_model :post do
|
7
|
+
table do |t|
|
8
|
+
t.string "permalink"
|
9
|
+
end
|
10
|
+
|
11
|
+
model do
|
12
|
+
has_token_on :permalink, {
|
13
|
+
:length => 5,
|
14
|
+
:unique => true,
|
15
|
+
:prepend => "foo",
|
16
|
+
:append => "bar",
|
17
|
+
:on => [:create]
|
18
|
+
}
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should generate unique token if requested" do
|
23
|
+
somepost = Post.new
|
24
|
+
somepost.stubs(:build_token).returns('hi')
|
25
|
+
somepost.save
|
26
|
+
subject.expects(:build_token).times(3).returns('hi').then.returns('unique')
|
27
|
+
Post.expects(:exists?).twice # on first time we'll find unique
|
28
|
+
subject.save
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
require File.expand_path('../spec_helper', File.dirname(__FILE__))
|
2
|
-
require 'pp'
|
3
|
-
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
|
4
2
|
|
5
|
-
describe HasTokenOn::
|
3
|
+
describe HasTokenOn::Base, "instantiation" do
|
6
4
|
subject { Post }
|
7
5
|
|
8
6
|
with_model :post do
|
@@ -58,7 +56,7 @@ describe HasTokenOn::ActiveRecord, "instantiation" do
|
|
58
56
|
end
|
59
57
|
end
|
60
58
|
|
61
|
-
describe HasTokenOn::
|
59
|
+
describe HasTokenOn::Base, "callbacks" do
|
62
60
|
subject { Post.new }
|
63
61
|
|
64
62
|
with_model :post do
|
@@ -105,7 +103,7 @@ describe HasTokenOn::ActiveRecord, "callbacks" do
|
|
105
103
|
end
|
106
104
|
end
|
107
105
|
|
108
|
-
describe HasTokenOn::
|
106
|
+
describe HasTokenOn::Base do
|
109
107
|
subject { Post.new }
|
110
108
|
|
111
109
|
with_model :post do
|
@@ -210,34 +208,3 @@ describe HasTokenOn::ActiveRecord do
|
|
210
208
|
end
|
211
209
|
|
212
210
|
end
|
213
|
-
|
214
|
-
describe HasTokenOn::ActiveRecord do
|
215
|
-
subject { Post.new }
|
216
|
-
|
217
|
-
with_model :post do
|
218
|
-
table do |t|
|
219
|
-
t.string "permalink"
|
220
|
-
end
|
221
|
-
|
222
|
-
model do
|
223
|
-
has_token_on :permalink, {
|
224
|
-
:length => 5,
|
225
|
-
:unique => true,
|
226
|
-
:prepend => "foo",
|
227
|
-
:append => "bar",
|
228
|
-
:on => [:create]
|
229
|
-
}
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
|
-
it "should generate unique token if requested" do
|
234
|
-
somepost = Post.new
|
235
|
-
somepost.stubs(:build_token).returns('hi')
|
236
|
-
somepost.save
|
237
|
-
subject.expects(:build_token).times(3).returns('hi').then.returns('unique')
|
238
|
-
Post.expects(:exists?).twice # on first time we'll find unique
|
239
|
-
subject.save
|
240
|
-
end
|
241
|
-
|
242
|
-
|
243
|
-
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require File.expand_path('../spec_helper', File.dirname(__FILE__))
|
2
|
+
|
3
|
+
connection = Mongo::Connection.new
|
4
|
+
Mongoid.database = connection.db("has_token_on_test")
|
5
|
+
|
6
|
+
describe HasTokenOn::Mongoid do
|
7
|
+
before :all do
|
8
|
+
class Post
|
9
|
+
include Mongoid::Document
|
10
|
+
field :slug
|
11
|
+
has_token_on :slug, :unique => true
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
before :each do
|
16
|
+
Post.destroy_all
|
17
|
+
end
|
18
|
+
|
19
|
+
subject { Post.new }
|
20
|
+
|
21
|
+
it "should generate unique token if requested" do
|
22
|
+
somepost = Post.new
|
23
|
+
somepost.stubs(:build_token).returns('hi')
|
24
|
+
somepost.save
|
25
|
+
subject.expects(:build_token).times(3).returns('hi').then.returns('unique')
|
26
|
+
Post.expects(:exists?).twice # on first time we'll find unique
|
27
|
+
subject.save
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -8,7 +8,9 @@ require 'with_model'
|
|
8
8
|
require 'mocha'
|
9
9
|
|
10
10
|
require 'has_token_on'
|
11
|
+
require 'has_token_on/models/base'
|
11
12
|
require 'has_token_on/models/active_record'
|
13
|
+
require 'has_token_on/models/mongoid'
|
12
14
|
|
13
15
|
RSpec.configure do |config|
|
14
16
|
config.filter_run :focus => true
|
@@ -16,3 +18,4 @@ RSpec.configure do |config|
|
|
16
18
|
config.extend WithModel
|
17
19
|
end
|
18
20
|
|
21
|
+
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
|
metadata
CHANGED
@@ -1,149 +1,168 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: has_token_on
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
4
5
|
prerelease:
|
5
|
-
version: 0.2.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Saulius Grigaliunas
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
date: 2011-05-21 00:00:00 +03:00
|
12
|
+
date: 2011-08-19 00:00:00.000000000 +03:00
|
14
13
|
default_executable:
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
17
16
|
name: rails
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &2161380880 !ruby/object:Gem::Requirement
|
20
18
|
none: false
|
21
|
-
requirements:
|
22
|
-
- -
|
23
|
-
- !ruby/object:Gem::Version
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
24
22
|
version: 3.0.0
|
25
23
|
type: :runtime
|
26
|
-
version_requirements: *id001
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: simple_uuid
|
29
24
|
prerelease: false
|
30
|
-
|
25
|
+
version_requirements: *2161380880
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: simple_uuid
|
28
|
+
requirement: &2161380460 !ruby/object:Gem::Requirement
|
31
29
|
none: false
|
32
|
-
requirements:
|
33
|
-
- -
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version:
|
36
|
-
type: :
|
37
|
-
version_requirements: *id002
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: sqlite3
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
40
35
|
prerelease: false
|
41
|
-
|
36
|
+
version_requirements: *2161380460
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: sqlite3
|
39
|
+
requirement: &2161379900 !ruby/object:Gem::Requirement
|
42
40
|
none: false
|
43
|
-
requirements:
|
44
|
-
- -
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version:
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
47
45
|
type: :development
|
48
|
-
version_requirements: *id003
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
|
-
name: rspec
|
51
46
|
prerelease: false
|
52
|
-
|
47
|
+
version_requirements: *2161379900
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rspec
|
50
|
+
requirement: &2161379380 !ruby/object:Gem::Requirement
|
53
51
|
none: false
|
54
|
-
requirements:
|
55
|
-
- -
|
56
|
-
- !ruby/object:Gem::Version
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
57
55
|
version: 2.0.0
|
58
56
|
type: :development
|
59
|
-
version_requirements: *id004
|
60
|
-
- !ruby/object:Gem::Dependency
|
61
|
-
name: mocha
|
62
57
|
prerelease: false
|
63
|
-
|
58
|
+
version_requirements: *2161379380
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: mocha
|
61
|
+
requirement: &2161378900 !ruby/object:Gem::Requirement
|
64
62
|
none: false
|
65
|
-
requirements:
|
66
|
-
- -
|
67
|
-
- !ruby/object:Gem::Version
|
63
|
+
requirements:
|
64
|
+
- - ! '>='
|
65
|
+
- !ruby/object:Gem::Version
|
68
66
|
version: 0.9.8
|
69
67
|
type: :development
|
70
|
-
version_requirements: *id005
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
|
-
name: with_model
|
73
68
|
prerelease: false
|
74
|
-
|
69
|
+
version_requirements: *2161378900
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: with_model
|
72
|
+
requirement: &2161378420 !ruby/object:Gem::Requirement
|
75
73
|
none: false
|
76
|
-
requirements:
|
77
|
-
- -
|
78
|
-
- !ruby/object:Gem::Version
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
79
77
|
version: 0.1.4
|
80
78
|
type: :development
|
81
|
-
version_requirements: *id006
|
82
|
-
- !ruby/object:Gem::Dependency
|
83
|
-
name: guard
|
84
79
|
prerelease: false
|
85
|
-
|
80
|
+
version_requirements: *2161378420
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: guard
|
83
|
+
requirement: &2161377940 !ruby/object:Gem::Requirement
|
86
84
|
none: false
|
87
|
-
requirements:
|
88
|
-
- -
|
89
|
-
- !ruby/object:Gem::Version
|
85
|
+
requirements:
|
86
|
+
- - ! '>='
|
87
|
+
- !ruby/object:Gem::Version
|
90
88
|
version: 0.3.4
|
91
89
|
type: :development
|
92
|
-
version_requirements: *id007
|
93
|
-
- !ruby/object:Gem::Dependency
|
94
|
-
name: guard-rspec
|
95
90
|
prerelease: false
|
96
|
-
|
91
|
+
version_requirements: *2161377940
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: guard-rspec
|
94
|
+
requirement: &2161377460 !ruby/object:Gem::Requirement
|
97
95
|
none: false
|
98
|
-
requirements:
|
99
|
-
- -
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version:
|
96
|
+
requirements:
|
97
|
+
- - ! '>='
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
102
100
|
type: :development
|
103
|
-
version_requirements: *id008
|
104
|
-
- !ruby/object:Gem::Dependency
|
105
|
-
name: growl
|
106
101
|
prerelease: false
|
107
|
-
|
102
|
+
version_requirements: *2161377460
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: growl
|
105
|
+
requirement: &2161369020 !ruby/object:Gem::Requirement
|
108
106
|
none: false
|
109
|
-
requirements:
|
110
|
-
- -
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
version:
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
113
111
|
type: :development
|
114
|
-
version_requirements: *id009
|
115
|
-
- !ruby/object:Gem::Dependency
|
116
|
-
name: rb-fsevent
|
117
112
|
prerelease: false
|
118
|
-
|
113
|
+
version_requirements: *2161369020
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: rb-fsevent
|
116
|
+
requirement: &2161368520 !ruby/object:Gem::Requirement
|
119
117
|
none: false
|
120
|
-
requirements:
|
121
|
-
- -
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
version:
|
118
|
+
requirements:
|
119
|
+
- - ! '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
124
122
|
type: :development
|
125
|
-
|
126
|
-
|
123
|
+
prerelease: false
|
124
|
+
version_requirements: *2161368520
|
125
|
+
- !ruby/object:Gem::Dependency
|
127
126
|
name: ruby-debug19
|
127
|
+
requirement: &2161368040 !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
129
|
+
requirements:
|
130
|
+
- - ! '>='
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
type: :development
|
128
134
|
prerelease: false
|
129
|
-
|
135
|
+
version_requirements: *2161368040
|
136
|
+
- !ruby/object:Gem::Dependency
|
137
|
+
name: mongoid
|
138
|
+
requirement: &2161367520 !ruby/object:Gem::Requirement
|
130
139
|
none: false
|
131
|
-
requirements:
|
132
|
-
- -
|
133
|
-
- !ruby/object:Gem::Version
|
134
|
-
version:
|
140
|
+
requirements:
|
141
|
+
- - ! '>='
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '2'
|
135
144
|
type: :development
|
136
|
-
|
145
|
+
prerelease: false
|
146
|
+
version_requirements: *2161367520
|
147
|
+
- !ruby/object:Gem::Dependency
|
148
|
+
name: bson_ext
|
149
|
+
requirement: &2161367000 !ruby/object:Gem::Requirement
|
150
|
+
none: false
|
151
|
+
requirements:
|
152
|
+
- - ! '>='
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: 1.3.1
|
155
|
+
type: :development
|
156
|
+
prerelease: false
|
157
|
+
version_requirements: *2161367000
|
137
158
|
description: Simple yet customizable token generator for Rails 3
|
138
|
-
email:
|
159
|
+
email:
|
139
160
|
- saulius@ninja.lt
|
140
161
|
executables: []
|
141
|
-
|
142
162
|
extensions: []
|
143
|
-
|
144
|
-
extra_rdoc_files:
|
163
|
+
extra_rdoc_files:
|
145
164
|
- README.md
|
146
|
-
files:
|
165
|
+
files:
|
147
166
|
- .gitignore
|
148
167
|
- .rspec
|
149
168
|
- .rvmrc
|
@@ -158,38 +177,39 @@ files:
|
|
158
177
|
- lib/generators/has_token_on/templates/create_token.rb.erb
|
159
178
|
- lib/has_token_on.rb
|
160
179
|
- lib/has_token_on/models/active_record.rb
|
180
|
+
- lib/has_token_on/models/base.rb
|
181
|
+
- lib/has_token_on/models/mongoid.rb
|
161
182
|
- lib/has_token_on/rails.rb
|
162
183
|
- lib/has_token_on/version.rb
|
163
184
|
- rails/init.rb
|
164
|
-
- spec/has_token_on/
|
185
|
+
- spec/has_token_on/active_record_spec.rb
|
186
|
+
- spec/has_token_on/base_spec.rb
|
187
|
+
- spec/has_token_on/mongoid_spec.rb
|
165
188
|
- spec/spec_helper.rb
|
166
189
|
has_rdoc: true
|
167
190
|
homepage: https://github.com/sauliusg/has_token_on
|
168
|
-
licenses:
|
191
|
+
licenses:
|
169
192
|
- MIT
|
170
193
|
post_install_message:
|
171
194
|
rdoc_options: []
|
172
|
-
|
173
|
-
require_paths:
|
195
|
+
require_paths:
|
174
196
|
- lib
|
175
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
197
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
176
198
|
none: false
|
177
|
-
requirements:
|
178
|
-
- -
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version:
|
181
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
199
|
+
requirements:
|
200
|
+
- - ! '>='
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: '0'
|
203
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
204
|
none: false
|
183
|
-
requirements:
|
184
|
-
- -
|
185
|
-
- !ruby/object:Gem::Version
|
186
|
-
version:
|
205
|
+
requirements:
|
206
|
+
- - ! '>='
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
187
209
|
requirements: []
|
188
|
-
|
189
210
|
rubyforge_project: has_token_on
|
190
|
-
rubygems_version: 1.6.
|
211
|
+
rubygems_version: 1.6.2
|
191
212
|
signing_key:
|
192
213
|
specification_version: 3
|
193
214
|
summary: A token generator plugin for Rails 3
|
194
215
|
test_files: []
|
195
|
-
|