voteable_mongoid 0.4.2 → 0.4.3
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 +12 -0
- data/Gemfile +4 -0
- data/Rakefile +10 -0
- data/VERSION +0 -0
- data/doc/Mongoid/Voteable.html +691 -0
- data/doc/Mongoid/Voter.html +682 -0
- data/doc/Mongoid.html +93 -0
- data/doc/VoteableMongoid.html +94 -0
- data/doc/_index.html +122 -0
- data/doc/class_list.html +36 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +53 -0
- data/doc/css/style.css +318 -0
- data/doc/file.README.html +157 -0
- data/doc/file_list.html +38 -0
- data/doc/frames.html +13 -0
- data/doc/index.html +157 -0
- data/doc/js/app.js +203 -0
- data/doc/js/full_list.js +149 -0
- data/doc/js/jquery.js +16 -0
- data/doc/method_list.html +139 -0
- data/doc/top-level-namespace.html +88 -0
- data/lib/mongoid/voteable.rb +56 -39
- data/lib/mongoid/voter.rb +1 -1
- data/lib/voteable_mongoid/version.rb +3 -0
- data/spec/.rspec +1 -0
- data/spec/models/comment.rb +11 -0
- data/spec/models/post.rb +8 -0
- data/spec/models/user.rb +4 -0
- data/spec/spec_helper.rb +30 -0
- data/spec/voteable_spec.rb +234 -0
- data/spec/voter_spec.rb +134 -0
- data/voteable_mongoid.gemspec +25 -0
- metadata +80 -42
data/lib/mongoid/voter.rb
CHANGED
@@ -7,7 +7,7 @@ module Mongoid
|
|
7
7
|
# @param [Class] klass the votee class, e.g. `Post` or `Comment`
|
8
8
|
# @return [Array, nil] an array of voteable objects voted by this voter
|
9
9
|
def votees(klass)
|
10
|
-
klass.any_of({
|
10
|
+
klass.any_of({ "voteable.up_voter_ids" => _id }, { "voteable.down_voter_ids" => _id })
|
11
11
|
end
|
12
12
|
|
13
13
|
# Check to see if this voter voted on the votee or not
|
data/spec/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color --debugger
|
data/spec/models/post.rb
ADDED
data/spec/models/user.rb
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
Bundler.setup
|
4
|
+
|
5
|
+
|
6
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
7
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
8
|
+
|
9
|
+
MODELS = File.join(File.dirname(__FILE__), "models")
|
10
|
+
$LOAD_PATH.unshift(MODELS)
|
11
|
+
|
12
|
+
|
13
|
+
require 'mongoid'
|
14
|
+
require 'voteable_mongoid'
|
15
|
+
require 'rspec'
|
16
|
+
require 'rspec/autorun'
|
17
|
+
|
18
|
+
|
19
|
+
Mongoid.configure do |config|
|
20
|
+
name = "voteable_mongoid_test"
|
21
|
+
host = "localhost"
|
22
|
+
config.master = Mongo::Connection.new.db(name)
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
Dir[ File.join(MODELS, "*.rb") ].sort.each { |file| require File.basename(file) }
|
27
|
+
|
28
|
+
|
29
|
+
RSpec.configure do |config|
|
30
|
+
end
|
@@ -0,0 +1,234 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Mongoid::Voteable do
|
4
|
+
before :all do
|
5
|
+
Mongoid::database.connection.drop_database(Mongoid::database.name)
|
6
|
+
|
7
|
+
@post1 = Post.create!
|
8
|
+
@post2 = Post.create!
|
9
|
+
|
10
|
+
@comment = @post2.comments.create!
|
11
|
+
|
12
|
+
@user1 = User.create!
|
13
|
+
@user2 = User.create!
|
14
|
+
end
|
15
|
+
|
16
|
+
context "just created" do
|
17
|
+
it 'voteable votes_count, votes_point should be zero' do
|
18
|
+
@post1.votes_count.should == 0
|
19
|
+
@post1.votes_point.should == 0
|
20
|
+
|
21
|
+
@post2.votes_count.should == 0
|
22
|
+
@post2.votes_point.should == 0
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'voteable up_voter_ids, down_voter_ids should be empty' do
|
26
|
+
@post1.up_voter_ids.should be_empty
|
27
|
+
@post1.down_voter_ids.should be_empty
|
28
|
+
|
29
|
+
@post2.up_voter_ids.should be_empty
|
30
|
+
@post2.down_voter_ids.should be_empty
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'voter votees should be empty' do
|
34
|
+
@user1.votees(Post).should be_empty
|
35
|
+
@user2.votees(Post).should be_empty
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'revote has no effect' do
|
39
|
+
Post.vote(:revote => true, :votee_id => @post1.id, :voter_id => @user1.id, :value => 'up')
|
40
|
+
@post1.reload
|
41
|
+
|
42
|
+
@post1.votes_count.should == 0
|
43
|
+
@post1.votes_point.should == 0
|
44
|
+
|
45
|
+
Post.vote(:revote => true, :votee_id => @post2.id, :voter_id => @user2.id, :value => :down)
|
46
|
+
@post2.reload
|
47
|
+
|
48
|
+
@post2.votes_count.should == 0
|
49
|
+
@post2.votes_point.should == 0
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'user1 vote up post1 the first time' do
|
54
|
+
before :all do
|
55
|
+
Post.vote(:votee_id => @post1.id, :voter_id => @user1.id, :value => :up)
|
56
|
+
@post1.reload
|
57
|
+
end
|
58
|
+
|
59
|
+
it '' do
|
60
|
+
@post1.votes_count.should == 1
|
61
|
+
@post1.votes_point.should == 1
|
62
|
+
|
63
|
+
@post1.vote_value(@user1).should == :up
|
64
|
+
@post1.vote_value(@user2.id).should be_nil
|
65
|
+
|
66
|
+
@user1.votees(Post).to_a.should == [ @post1 ]
|
67
|
+
@user2.votees(Post).to_a.should be_empty
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'user1 vote post1 has no effect' do
|
71
|
+
Post.vote(:revote => false, :votee_id => @post1.id, :voter_id => @user1.id, :value => :up)
|
72
|
+
@post1.reload
|
73
|
+
|
74
|
+
@post1.votes_count.should == 1
|
75
|
+
@post1.votes_point.should == 1
|
76
|
+
|
77
|
+
@post1.vote_value(@user1.id).should == :up
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'user2 vote down post1 the first time' do
|
82
|
+
before :all do
|
83
|
+
Post.vote(:votee_id => @post1.id, :voter_id => @user2.id, :value => :down)
|
84
|
+
@post1.reload
|
85
|
+
end
|
86
|
+
|
87
|
+
it '' do
|
88
|
+
@post1.votes_count.should == 2
|
89
|
+
@post1.votes_point.should == 0
|
90
|
+
|
91
|
+
@post1.vote_value(@user1.id).should == :up
|
92
|
+
@post1.vote_value(@user2.id).should == :down
|
93
|
+
|
94
|
+
@user1.votees(Post).to_a.should == [ @post1 ]
|
95
|
+
@user2.votees(Post).to_a.should == [ @post1 ]
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
context 'user1 change vote on post1 from up to down' do
|
100
|
+
before :all do
|
101
|
+
Post.vote(:revote => true, :votee_id => @post1.id, :voter_id => @user1.id, :value => :down)
|
102
|
+
@post1.reload
|
103
|
+
end
|
104
|
+
|
105
|
+
it '' do
|
106
|
+
@post1.votes_count.should == 2
|
107
|
+
@post1.votes_point.should == -2
|
108
|
+
|
109
|
+
@post1.vote_value(@user1.id).should == :down
|
110
|
+
@post1.vote_value(@user2.id).should == :down
|
111
|
+
|
112
|
+
@user1.votees(Post).to_a.should == [ @post1 ]
|
113
|
+
@user2.votees(Post).to_a.should == [ @post1 ]
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
context 'user1 vote down post2 the first time' do
|
118
|
+
before :all do
|
119
|
+
Post.vote(:votee_id => @post2.id, :voter_id => @user1.id, :value => :down)
|
120
|
+
@post2.reload
|
121
|
+
end
|
122
|
+
|
123
|
+
it '' do
|
124
|
+
@post2.votes_count.should == 1
|
125
|
+
@post2.votes_point.should == -1
|
126
|
+
|
127
|
+
@post2.vote_value(@user1.id).should == :down
|
128
|
+
@post2.vote_value(@user2.id).should be_nil
|
129
|
+
|
130
|
+
@user1.votees(Post).to_a.should == [ @post1, @post2 ]
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
context 'user1 change vote on post2 from down to up' do
|
135
|
+
before :all do
|
136
|
+
Post.vote(:revote => true, :votee_id => @post2.id.to_s, :voter_id => @user1.id.to_s, :value => :up)
|
137
|
+
@post2.reload
|
138
|
+
end
|
139
|
+
|
140
|
+
it '' do
|
141
|
+
@post2.votes_count.should == 1
|
142
|
+
@post2.votes_point.should == 1
|
143
|
+
|
144
|
+
@post2.vote_value(@user1.id).should == :up
|
145
|
+
@post2.vote_value(@user2.id).should be_nil
|
146
|
+
|
147
|
+
@user1.votees(Post).to_a.should == [ @post1, @post2 ]
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
|
152
|
+
context 'user1 vote up post2 comment the first time' do
|
153
|
+
before :all do
|
154
|
+
@comment.vote(:voter_id => @user1.id, :value => :up)
|
155
|
+
@comment.reload
|
156
|
+
@post2.reload
|
157
|
+
end
|
158
|
+
|
159
|
+
it '' do
|
160
|
+
@post2.votes_count.should == 2
|
161
|
+
@post2.votes_point.should == 3
|
162
|
+
|
163
|
+
@comment.votes_count.should == 1
|
164
|
+
@comment.votes_point.should == 1
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
|
169
|
+
context 'user1 revote post2 comment from up to down' do
|
170
|
+
before :all do
|
171
|
+
@user1.vote(:votee => @comment, :value => :down)
|
172
|
+
@comment.reload
|
173
|
+
@post2.reload
|
174
|
+
end
|
175
|
+
|
176
|
+
it '' do
|
177
|
+
@post2.votes_count.should == 2
|
178
|
+
@post2.votes_point.should == 0
|
179
|
+
|
180
|
+
@comment.votes_count.should == 1
|
181
|
+
@comment.votes_point.should == -3
|
182
|
+
end
|
183
|
+
|
184
|
+
it 'revote with wrong value has no effect' do
|
185
|
+
@user1.vote(:votee => @comment, :value => :down)
|
186
|
+
|
187
|
+
@post2.votes_count.should == 2
|
188
|
+
@post2.votes_point.should == 0
|
189
|
+
|
190
|
+
@comment.votes_count.should == 1
|
191
|
+
@comment.votes_point.should == -3
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
context "user1 unvote on post1" do
|
196
|
+
before(:all) do
|
197
|
+
@post1.vote(:voter_id => @user1.id, :votee_id => @post1.id, :unvote => true)
|
198
|
+
@post1.reload
|
199
|
+
end
|
200
|
+
|
201
|
+
it "" do
|
202
|
+
@post1.votes_count.should == 1
|
203
|
+
@post1.votes_point.should == -1
|
204
|
+
|
205
|
+
@post1.vote_value(@user1.id).should be_nil
|
206
|
+
@post1.vote_value(@user2.id).should == :down
|
207
|
+
|
208
|
+
@user1.votees(Post).to_a.should_not include(@post1)
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
context "@post1 has 1 vote and -1 point, @post2 has 2 votes and 0 point" do
|
213
|
+
it "" do
|
214
|
+
Post.most_voted.first.should == @post2
|
215
|
+
Post.best_voted.first.should == @post2
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
context "user1 unvote on comment" do
|
220
|
+
before(:all) do
|
221
|
+
@user1.unvote(@comment)
|
222
|
+
@comment.reload
|
223
|
+
@post2.reload
|
224
|
+
end
|
225
|
+
|
226
|
+
it "" do
|
227
|
+
@post2.votes_count.should == 1
|
228
|
+
@post2.votes_point.should == 1
|
229
|
+
|
230
|
+
@comment.votes_count.should == 0
|
231
|
+
@comment.votes_point.should == 0
|
232
|
+
end
|
233
|
+
end
|
234
|
+
end
|
data/spec/voter_spec.rb
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Mongoid::Voter do
|
4
|
+
before :all do
|
5
|
+
Mongoid::database.connection.drop_database(Mongoid::database.name)
|
6
|
+
|
7
|
+
@post1 = Post.create!
|
8
|
+
@post2 = Post.create!
|
9
|
+
|
10
|
+
@user1 = User.create!
|
11
|
+
@user2 = User.create!
|
12
|
+
end
|
13
|
+
|
14
|
+
context "just created" do
|
15
|
+
it '' do
|
16
|
+
@user1.votees(Post).should be_empty
|
17
|
+
@user1.voted?(@post1).should be_false
|
18
|
+
@user1.voted?(@post2).should be_false
|
19
|
+
|
20
|
+
@user2.votees(Post).should be_empty
|
21
|
+
@user2.voted?(@post1).should be_false
|
22
|
+
@user2.voted?(@post2).should be_false
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'revote has no effect' do
|
26
|
+
@user2.vote(:revote => true, :votee => @post2, :value => :down)
|
27
|
+
@post2.reload
|
28
|
+
|
29
|
+
@post2.votes_count.should == 0
|
30
|
+
@post2.votes_point.should == 0
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'user1 vote up post1 the first time' do
|
35
|
+
before :all do
|
36
|
+
@user1.vote(:revote => '', :votee_id => @post1.id, :votee_type => 'Post', :value => :up)
|
37
|
+
@post1.reload
|
38
|
+
end
|
39
|
+
|
40
|
+
it '' do
|
41
|
+
@post1.votes_count.should == 1
|
42
|
+
@post1.votes_point.should == 1
|
43
|
+
|
44
|
+
@user1.vote_value(@post1).should == :up
|
45
|
+
@user2.vote_value(:votee_type => 'Post', :votee_id => @post1.id).should be_nil
|
46
|
+
|
47
|
+
@user1.should be_voted(@post1)
|
48
|
+
@user2.should_not be_voted(:votee_type => 'Post', :votee_id => @post1.id)
|
49
|
+
|
50
|
+
@user1.votees(Post).to_a.should == [ @post1 ]
|
51
|
+
@user2.votees(Post).to_a.should be_empty
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'user1 vote post1 has no effect' do
|
55
|
+
@user1.vote(:votee => @post1, :value => :up)
|
56
|
+
@post1.reload
|
57
|
+
|
58
|
+
@post1.votes_count.should == 1
|
59
|
+
@post1.votes_point.should == 1
|
60
|
+
|
61
|
+
@post1.vote_value(@user1.id).should == :up
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
context 'user2 vote down post1 the first time' do
|
66
|
+
before :all do
|
67
|
+
@user2.vote(:votee => @post1, :value => :down)
|
68
|
+
@post1.reload
|
69
|
+
end
|
70
|
+
|
71
|
+
it '' do
|
72
|
+
@post1.votes_count.should == 2
|
73
|
+
@post1.votes_point.should == 0
|
74
|
+
|
75
|
+
@user1.vote_value(@post1).should == :up
|
76
|
+
@user2.vote_value(@post1).should == :down
|
77
|
+
|
78
|
+
@user1.votees(Post).to_a.should == [ @post1 ]
|
79
|
+
@user2.votees(Post).to_a.should == [ @post1 ]
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context 'user1 change vote on post1 from up to down' do
|
84
|
+
before :all do
|
85
|
+
@user1.vote(:votee => @post1, :value => :down)
|
86
|
+
@post1.reload
|
87
|
+
end
|
88
|
+
|
89
|
+
it '' do
|
90
|
+
@post1.votes_count.should == 2
|
91
|
+
@post1.votes_point.should == -2
|
92
|
+
|
93
|
+
@user1.vote_value(@post1).should == :down
|
94
|
+
@user2.vote_value(@post1).should == :down
|
95
|
+
|
96
|
+
@user1.votees(Post).to_a.should == [ @post1 ]
|
97
|
+
@user2.votees(Post).to_a.should == [ @post1 ]
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
context 'user1 vote down post2 the first time' do
|
102
|
+
before :all do
|
103
|
+
@user1.vote(:new => 'abc', :votee => @post2, :value => :down)
|
104
|
+
@post2.reload
|
105
|
+
end
|
106
|
+
|
107
|
+
it '' do
|
108
|
+
@post2.votes_count.should == 1
|
109
|
+
@post2.votes_point.should == -1
|
110
|
+
|
111
|
+
@user1.vote_value(@post2).should == :down
|
112
|
+
@user2.vote_value(@post2).should be_nil
|
113
|
+
|
114
|
+
@user1.votees(Post).to_a.should == [ @post1, @post2 ]
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
context 'user1 change vote on post2 from down to up' do
|
119
|
+
before :all do
|
120
|
+
@user1.vote(:revote => 'abc', :votee => @post2, :value => :up)
|
121
|
+
@post2.reload
|
122
|
+
end
|
123
|
+
|
124
|
+
it '' do
|
125
|
+
@post2.votes_count.should == 1
|
126
|
+
@post2.votes_point.should == 1
|
127
|
+
|
128
|
+
@user1.vote_value(@post2).should == :up
|
129
|
+
@user2.vote_value(@post2).should be_nil
|
130
|
+
|
131
|
+
@user1.votees(Post).to_a.should == [ @post1, @post2 ]
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "voteable_mongoid/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "voteable_mongoid"
|
7
|
+
s.version = VoteableMongoid::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Alex Nguyen", "Stefan Nguyen"]
|
10
|
+
s.email = ["alex@vinova.sg"]
|
11
|
+
s.homepage = "http://vinova.sg"
|
12
|
+
s.summary = %q{Add Up / Down Voting for Mongoid}
|
13
|
+
s.description = %q{Add Up / Down Voting for Mongoid (built for speed by using one Mongodb update-in-place for each collection when provided enough information)}
|
14
|
+
|
15
|
+
s.add_dependency 'mongoid', '~> 2.0.0.rc'
|
16
|
+
s.add_development_dependency 'rspec'
|
17
|
+
s.add_development_dependency 'bson_ext'
|
18
|
+
|
19
|
+
s.rubyforge_project = "voteable_mongoid"
|
20
|
+
|
21
|
+
s.files = `git ls-files`.split("\n")
|
22
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
23
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
24
|
+
s.require_paths = ["lib"]
|
25
|
+
end
|
metadata
CHANGED
@@ -1,90 +1,117 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: voteable_mongoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 9
|
4
5
|
prerelease:
|
5
|
-
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 4
|
9
|
+
- 3
|
10
|
+
version: 0.4.3
|
6
11
|
platform: ruby
|
7
12
|
authors:
|
8
13
|
- Alex Nguyen
|
14
|
+
- Stefan Nguyen
|
9
15
|
autorequire:
|
10
16
|
bindir: bin
|
11
17
|
cert_chain: []
|
12
18
|
|
13
|
-
date: 2011-03-
|
19
|
+
date: 2011-03-30 00:00:00 +08:00
|
14
20
|
default_executable:
|
15
21
|
dependencies:
|
16
22
|
- !ruby/object:Gem::Dependency
|
17
|
-
name:
|
23
|
+
name: mongoid
|
24
|
+
prerelease: false
|
18
25
|
requirement: &id001 !ruby/object:Gem::Requirement
|
19
26
|
none: false
|
20
27
|
requirements:
|
21
|
-
- -
|
28
|
+
- - ~>
|
22
29
|
- !ruby/object:Gem::Version
|
23
|
-
|
30
|
+
hash: 7712058
|
31
|
+
segments:
|
32
|
+
- 2
|
33
|
+
- 0
|
34
|
+
- 0
|
35
|
+
- rc
|
36
|
+
version: 2.0.0.rc
|
24
37
|
type: :runtime
|
25
|
-
prerelease: false
|
26
38
|
version_requirements: *id001
|
27
39
|
- !ruby/object:Gem::Dependency
|
28
40
|
name: rspec
|
41
|
+
prerelease: false
|
29
42
|
requirement: &id002 !ruby/object:Gem::Requirement
|
30
43
|
none: false
|
31
44
|
requirements:
|
32
45
|
- - ">="
|
33
46
|
- !ruby/object:Gem::Version
|
47
|
+
hash: 3
|
48
|
+
segments:
|
49
|
+
- 0
|
34
50
|
version: "0"
|
35
51
|
type: :development
|
36
|
-
prerelease: false
|
37
52
|
version_requirements: *id002
|
38
53
|
- !ruby/object:Gem::Dependency
|
39
|
-
name:
|
54
|
+
name: bson_ext
|
55
|
+
prerelease: false
|
40
56
|
requirement: &id003 !ruby/object:Gem::Requirement
|
41
57
|
none: false
|
42
58
|
requirements:
|
43
59
|
- - ">="
|
44
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 3
|
62
|
+
segments:
|
63
|
+
- 0
|
45
64
|
version: "0"
|
46
65
|
type: :development
|
47
|
-
prerelease: false
|
48
66
|
version_requirements: *id003
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
none: false
|
53
|
-
requirements:
|
54
|
-
- - ~>
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: 2.0.0.rc
|
57
|
-
type: :runtime
|
58
|
-
prerelease: false
|
59
|
-
version_requirements: *id004
|
60
|
-
- !ruby/object:Gem::Dependency
|
61
|
-
name: rspec
|
62
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
63
|
-
none: false
|
64
|
-
requirements:
|
65
|
-
- - ">="
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: "0"
|
68
|
-
type: :development
|
69
|
-
prerelease: false
|
70
|
-
version_requirements: *id005
|
71
|
-
description: Add Up / Down Voting for Mongoid
|
72
|
-
email: alex@vinova.sg
|
67
|
+
description: Add Up / Down Voting for Mongoid (built for speed by using one Mongodb update-in-place for each collection when provided enough information)
|
68
|
+
email:
|
69
|
+
- alex@vinova.sg
|
73
70
|
executables: []
|
74
71
|
|
75
72
|
extensions: []
|
76
73
|
|
77
|
-
extra_rdoc_files:
|
74
|
+
extra_rdoc_files: []
|
75
|
+
|
76
|
+
files:
|
77
|
+
- .gitignore
|
78
|
+
- Gemfile
|
78
79
|
- README.rdoc
|
80
|
+
- Rakefile
|
79
81
|
- TODO
|
80
|
-
|
82
|
+
- VERSION
|
83
|
+
- doc/Mongoid.html
|
84
|
+
- doc/Mongoid/Voteable.html
|
85
|
+
- doc/Mongoid/Voter.html
|
86
|
+
- doc/VoteableMongoid.html
|
87
|
+
- doc/_index.html
|
88
|
+
- doc/class_list.html
|
89
|
+
- doc/css/common.css
|
90
|
+
- doc/css/full_list.css
|
91
|
+
- doc/css/style.css
|
92
|
+
- doc/file.README.html
|
93
|
+
- doc/file_list.html
|
94
|
+
- doc/frames.html
|
95
|
+
- doc/index.html
|
96
|
+
- doc/js/app.js
|
97
|
+
- doc/js/full_list.js
|
98
|
+
- doc/js/jquery.js
|
99
|
+
- doc/method_list.html
|
100
|
+
- doc/top-level-namespace.html
|
81
101
|
- lib/mongoid/voteable.rb
|
82
102
|
- lib/mongoid/voter.rb
|
83
103
|
- lib/voteable_mongoid.rb
|
84
|
-
-
|
85
|
-
-
|
104
|
+
- lib/voteable_mongoid/version.rb
|
105
|
+
- spec/.rspec
|
106
|
+
- spec/models/comment.rb
|
107
|
+
- spec/models/post.rb
|
108
|
+
- spec/models/user.rb
|
109
|
+
- spec/spec_helper.rb
|
110
|
+
- spec/voteable_spec.rb
|
111
|
+
- spec/voter_spec.rb
|
112
|
+
- voteable_mongoid.gemspec
|
86
113
|
has_rdoc: true
|
87
|
-
homepage: http://
|
114
|
+
homepage: http://vinova.sg
|
88
115
|
licenses: []
|
89
116
|
|
90
117
|
post_install_message:
|
@@ -97,19 +124,30 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
97
124
|
requirements:
|
98
125
|
- - ">="
|
99
126
|
- !ruby/object:Gem::Version
|
127
|
+
hash: 3
|
128
|
+
segments:
|
129
|
+
- 0
|
100
130
|
version: "0"
|
101
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
132
|
none: false
|
103
133
|
requirements:
|
104
134
|
- - ">="
|
105
135
|
- !ruby/object:Gem::Version
|
136
|
+
hash: 3
|
137
|
+
segments:
|
138
|
+
- 0
|
106
139
|
version: "0"
|
107
140
|
requirements: []
|
108
141
|
|
109
|
-
rubyforge_project:
|
110
|
-
rubygems_version: 1.
|
142
|
+
rubyforge_project: voteable_mongoid
|
143
|
+
rubygems_version: 1.6.2
|
111
144
|
signing_key:
|
112
145
|
specification_version: 3
|
113
146
|
summary: Add Up / Down Voting for Mongoid
|
114
|
-
test_files:
|
115
|
-
|
147
|
+
test_files:
|
148
|
+
- spec/models/comment.rb
|
149
|
+
- spec/models/post.rb
|
150
|
+
- spec/models/user.rb
|
151
|
+
- spec/spec_helper.rb
|
152
|
+
- spec/voteable_spec.rb
|
153
|
+
- spec/voter_spec.rb
|