rs_voteable_mongo 1.0.2 → 1.1.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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -8
- data/CHANGELOG.rdoc +3 -87
- data/lib/voteable_mongo/helpers.rb +1 -5
- data/lib/voteable_mongo/tasks.rb +3 -3
- data/lib/voteable_mongo/version.rb +1 -1
- data/lib/voteable_mongo/voting.rb +2 -5
- data/spec/voteable_mongo/voteable_spec.rb +5 -4
- data/voteable_mongo.gemspec +2 -2
- metadata +19 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34491e2d1eb65a7076a9e623cc7460e32e76e987
|
4
|
+
data.tar.gz: 745aada7e71482e5c1b97a55d71828113f4c7647
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: efbf594bffa6301f41535aee2bc732ef0ebcda5fa5201f7effed4dd5cb28d2a9eb7779ab5a9183e59969009c8d9f262dd1cbb1b4860f5540d080632a14d1e9e4
|
7
|
+
data.tar.gz: 4bd403bbb80c1590b987ee304b1bcf6db8f5226be640b8369216aa53d0d14f850659bcd99278b9d77bf47c7594a44de0a71673f3f376da54c61d907152ca5fce
|
data/.travis.yml
CHANGED
@@ -7,16 +7,9 @@ language: ruby
|
|
7
7
|
rvm:
|
8
8
|
- 1.9.3
|
9
9
|
- 2.0.0
|
10
|
+
- 2.1.0
|
10
11
|
- jruby-19mode
|
11
|
-
- rbx-19mode
|
12
12
|
|
13
13
|
gemfile:
|
14
|
-
- Gemfile
|
15
|
-
- gemfiles/mongoid-3.0.gemfile
|
16
14
|
- gemfiles/mongoid-3.1.gemfile
|
17
15
|
- gemfiles/mongoid-4.0.gemfile
|
18
|
-
|
19
|
-
matrix:
|
20
|
-
exclude:
|
21
|
-
- rvm: rbx-19mode
|
22
|
-
gemfile: gemfiles/mongoid-4.0.gemfile
|
data/CHANGELOG.rdoc
CHANGED
@@ -1,93 +1,9 @@
|
|
1
|
+
== rs-1.1.0
|
2
|
+
* fixes for mongoid 5
|
3
|
+
|
1
4
|
== rs-1.0.0
|
2
5
|
* Forked gem
|
3
6
|
* drop mongomapper
|
4
7
|
* Support mongoid 3 and 4
|
5
8
|
* Add Travis-ci
|
6
9
|
|
7
|
-
== 0.9.3
|
8
|
-
* Support mongoid ~> 2.0, mongo_mapper ~> 0.9
|
9
|
-
|
10
|
-
== 0.9.2
|
11
|
-
* Replace votee_type to votee_class
|
12
|
-
* Bug fixes
|
13
|
-
|
14
|
-
== 0.9.1
|
15
|
-
* Update gem description
|
16
|
-
|
17
|
-
== 0.9.0
|
18
|
-
* Add MongoMapper support
|
19
|
-
* Simplify voting algorithm
|
20
|
-
* vote / revote / unvote always return voteable object (votee)
|
21
|
-
* Tasks module bug fixes
|
22
|
-
|
23
|
-
== 0.8.1
|
24
|
-
* Fix gem release bug
|
25
|
-
|
26
|
-
== 0.8.0
|
27
|
-
* Rename to voteable_mongo to support other MongoDB Object-Document Mappers like MongoMapper
|
28
|
-
* Minor fixes and refactoring
|
29
|
-
|
30
|
-
== 0.7.4
|
31
|
-
* Add Votee#up_voters(VoterClass), Votee#down_voters(VoterClass), Votee#voters(VoterClass)
|
32
|
-
* Add Voter scopes: Voter.up_voted_for(votee), Voter.down_voted_for(votee), Voter.voted_for(votee)
|
33
|
-
* Add voteable ..., :index => true options
|
34
|
-
* Optimization on unvote and revote validations
|
35
|
-
* Fix for :up & :down points are nil in rake tasks
|
36
|
-
|
37
|
-
== 0.7.3
|
38
|
-
* Add :return_votee => true option to vote function to warranty always return voteable object
|
39
|
-
* Add Votee.voted?, Votee.up_voted?, Votee.down_voted?
|
40
|
-
* Update parent for ManyToMany relationship
|
41
|
-
* Refactor
|
42
|
-
|
43
|
-
== 0.7.2
|
44
|
-
* Use Collection#find_and_modify to retrieve updated votes data and parent_ids (don't need an extra query to get parent_ids)
|
45
|
-
|
46
|
-
== 0.7.1
|
47
|
-
* Add votee#voted_by?(voter or voter_id)
|
48
|
-
* Better doc
|
49
|
-
* Refactor & cleanup source code
|
50
|
-
|
51
|
-
== 0.7.0
|
52
|
-
* Use readable field names (up, down, up_count, down_count, count, point) instead of very short field names (u, d, uc, dc, c, p)
|
53
|
-
|
54
|
-
== 0.6.4
|
55
|
-
* Drop Voter#votees, Voter#up_votees, Voter#down_votees in favor of Votee#voted_by(voter), Votee#up_voted_by(voter), Votee#down_voted_by(voter) scopes
|
56
|
-
|
57
|
-
== 0.6.3
|
58
|
-
* Add rake db:mongoid:voteable:migrate_old_votes to migrate vote data created by version < 0.6.0 to new vote data storage
|
59
|
-
|
60
|
-
== 0.6.2
|
61
|
-
* Fix bug: use before_create instead of after_after_initialize
|
62
|
-
|
63
|
-
== 0.6.1
|
64
|
-
* Set counters and point to 0 for uninitialized voteable objects in order sort and query
|
65
|
-
|
66
|
-
== 0.6.0
|
67
|
-
* Minimize vote data store (using short field names votes.u, votes.d, votes.c ...)
|
68
|
-
* Add Voter#up_votees, Voter#down_votees
|
69
|
-
* Remove index and scope from statistic module. User have to add indexes and scopes manually (see https://github.com/vinova/simple_qa/blob/master/app/models/question.rb)
|
70
|
-
* Bug fixes
|
71
|
-
|
72
|
-
== 0.5.0
|
73
|
-
* Rename vote_point to voteable
|
74
|
-
|
75
|
-
== 0.4.5
|
76
|
-
* Can use rake db:mongoid:voteable:remake_stats in Rails apps
|
77
|
-
* Use mongoid 2.0.0
|
78
|
-
|
79
|
-
== 0.4.4
|
80
|
-
* Add up_votes_count, down_votes_count
|
81
|
-
* Re-generate vote statistic data (counters and point)
|
82
|
-
|
83
|
-
== 0.4.3
|
84
|
-
* Wrap vote data in voteable namespace (voteable.up_voters_id, voteable.down_voters_ids, voteable.votes_count ...)
|
85
|
-
|
86
|
-
== 0.4.2
|
87
|
-
* Bug fixes
|
88
|
-
|
89
|
-
== 0.4.0
|
90
|
-
* Can unvote
|
91
|
-
|
92
|
-
== 0.3.5
|
93
|
-
* Use mongoid 2.0.0.rc
|
@@ -3,11 +3,7 @@ module Mongo
|
|
3
3
|
module Helpers
|
4
4
|
|
5
5
|
def self.try_to_convert_string_to_object_id(x)
|
6
|
-
|
7
|
-
x.is_a?(String) && Moped::BSON::ObjectId.legal?(x) ? Moped::BSON::ObjectId.from_string(x) : x
|
8
|
-
else
|
9
|
-
x.is_a?(String) && BSON::ObjectId.legal?(x) ? BSON::ObjectId.from_string(x) : x
|
10
|
-
end
|
6
|
+
x.is_a?(String) && BSON::ObjectId.legal?(x) ? BSON::ObjectId.from_string(x) : x
|
11
7
|
end
|
12
8
|
|
13
9
|
def self.get_mongo_id(x)
|
data/lib/voteable_mongo/tasks.rb
CHANGED
@@ -9,7 +9,7 @@ module Mongo
|
|
9
9
|
klass = class_name.constantize
|
10
10
|
klass_voteable = voteable[class_name]
|
11
11
|
puts "Init stats for #{class_name}" if log
|
12
|
-
klass.
|
12
|
+
klass.where(votes: nil).set(votes: DEFAULT_VOTES)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
@@ -46,7 +46,7 @@ module Mongo
|
|
46
46
|
up_count = up_voter_ids.size
|
47
47
|
down_count = down_voter_ids.size
|
48
48
|
|
49
|
-
klass.
|
49
|
+
klass.collection.find({_id: doc.id}).update_many(
|
50
50
|
'$set' => {
|
51
51
|
'votes' => {
|
52
52
|
'up' => up_voter_ids,
|
@@ -137,7 +137,7 @@ module Mongo
|
|
137
137
|
|
138
138
|
parent_ids = parent_id.is_a?(Array) ? parent_id : [ parent_id ]
|
139
139
|
|
140
|
-
parent_class.
|
140
|
+
parent_class.collection.find({'_id' => {'$in' => parent_ids}}).update_many({ '$inc' => inc_options })
|
141
141
|
end
|
142
142
|
end
|
143
143
|
|
@@ -29,10 +29,7 @@ module Mongo
|
|
29
29
|
|
30
30
|
# http://www.mongodb.org/display/DOCS/findAndModify+Command
|
31
31
|
begin
|
32
|
-
doc = where(query).
|
33
|
-
update,
|
34
|
-
:new => true
|
35
|
-
)
|
32
|
+
doc = where(query).find_one_and_update(update, {return_document: :after})
|
36
33
|
rescue Moped::Errors::OperationFailure
|
37
34
|
doc = nil
|
38
35
|
end
|
@@ -155,7 +152,7 @@ module Mongo
|
|
155
152
|
|
156
153
|
if (parent_id = doc[voteable_foreign_key(metadata)]).present?
|
157
154
|
parent_ids = parent_id.is_a?(Array) ? parent_id : [ parent_id ]
|
158
|
-
class_name.constantize.collection.find({'_id' => {'$in' => parent_ids}}).
|
155
|
+
class_name.constantize.collection.find({'_id' => {'$in' => parent_ids}}).update_many(
|
159
156
|
{ '$inc' => parent_inc_options(voteable, options) },
|
160
157
|
)
|
161
158
|
end
|
@@ -16,8 +16,9 @@ describe Mongo::Voteable do
|
|
16
16
|
[ {'votes.up' => 1, '_id' => 1},
|
17
17
|
{'votes.down' => 1, '_id' => 1},
|
18
18
|
].each { |index_key|
|
19
|
-
|
20
|
-
klass.collection.indexes[
|
19
|
+
|
20
|
+
klass.collection.indexes.select { |i| i['key'] == index_key }.first.should_not be_nil
|
21
|
+
klass.collection.indexes.select { |i| i['key'] == index_key }.first['unique'].should be_true
|
21
22
|
}
|
22
23
|
|
23
24
|
[ {'votes.count' => -1},
|
@@ -25,7 +26,7 @@ describe Mongo::Voteable do
|
|
25
26
|
{'votes.down_count' => -1},
|
26
27
|
{'votes.point' => -1},
|
27
28
|
].each { |index_key|
|
28
|
-
klass.collection.indexes[index_key
|
29
|
+
klass.collection.indexes.select { |i| i['key'] == index_key }.should_not be_nil
|
29
30
|
}
|
30
31
|
end
|
31
32
|
end
|
@@ -49,7 +50,7 @@ describe Mongo::Voteable do
|
|
49
50
|
end
|
50
51
|
|
51
52
|
it "vote for unexisting post" do
|
52
|
-
object_id =
|
53
|
+
object_id = BSON::ObjectId
|
53
54
|
@user1.vote(:votee_class => Post, :votee_id => object_id.new, :value => :up).should == false
|
54
55
|
end
|
55
56
|
|
data/voteable_mongo.gemspec
CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.require_paths = ['lib']
|
20
20
|
|
21
|
-
s.add_dependency "mongoid",
|
21
|
+
s.add_dependency "mongoid", '~> 5.0'
|
22
22
|
s.add_development_dependency 'rspec', '~> 2.14.1'
|
23
|
-
s.add_development_dependency "bundler"
|
23
|
+
s.add_development_dependency "bundler"
|
24
24
|
s.add_development_dependency "rake"
|
25
25
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rs_voteable_mongo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- RocketScience
|
@@ -9,68 +9,62 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-02-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongoid
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: '3.0'
|
21
|
-
- - <
|
18
|
+
- - "~>"
|
22
19
|
- !ruby/object:Gem::Version
|
23
20
|
version: '5.0'
|
24
21
|
type: :runtime
|
25
22
|
prerelease: false
|
26
23
|
version_requirements: !ruby/object:Gem::Requirement
|
27
24
|
requirements:
|
28
|
-
- -
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
version: '3.0'
|
31
|
-
- - <
|
25
|
+
- - "~>"
|
32
26
|
- !ruby/object:Gem::Version
|
33
27
|
version: '5.0'
|
34
28
|
- !ruby/object:Gem::Dependency
|
35
29
|
name: rspec
|
36
30
|
requirement: !ruby/object:Gem::Requirement
|
37
31
|
requirements:
|
38
|
-
- - ~>
|
32
|
+
- - "~>"
|
39
33
|
- !ruby/object:Gem::Version
|
40
34
|
version: 2.14.1
|
41
35
|
type: :development
|
42
36
|
prerelease: false
|
43
37
|
version_requirements: !ruby/object:Gem::Requirement
|
44
38
|
requirements:
|
45
|
-
- - ~>
|
39
|
+
- - "~>"
|
46
40
|
- !ruby/object:Gem::Version
|
47
41
|
version: 2.14.1
|
48
42
|
- !ruby/object:Gem::Dependency
|
49
43
|
name: bundler
|
50
44
|
requirement: !ruby/object:Gem::Requirement
|
51
45
|
requirements:
|
52
|
-
- -
|
46
|
+
- - ">="
|
53
47
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
48
|
+
version: '0'
|
55
49
|
type: :development
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
52
|
requirements:
|
59
|
-
- -
|
53
|
+
- - ">="
|
60
54
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
55
|
+
version: '0'
|
62
56
|
- !ruby/object:Gem::Dependency
|
63
57
|
name: rake
|
64
58
|
requirement: !ruby/object:Gem::Requirement
|
65
59
|
requirements:
|
66
|
-
- -
|
60
|
+
- - ">="
|
67
61
|
- !ruby/object:Gem::Version
|
68
62
|
version: '0'
|
69
63
|
type: :development
|
70
64
|
prerelease: false
|
71
65
|
version_requirements: !ruby/object:Gem::Requirement
|
72
66
|
requirements:
|
73
|
-
- -
|
67
|
+
- - ">="
|
74
68
|
- !ruby/object:Gem::Version
|
75
69
|
version: '0'
|
76
70
|
description: Add up / down voting ability to Mongoid documents. Optimized for speed
|
@@ -82,10 +76,10 @@ executables: []
|
|
82
76
|
extensions: []
|
83
77
|
extra_rdoc_files: []
|
84
78
|
files:
|
85
|
-
- .gitignore
|
86
|
-
- .ruby-gemset
|
87
|
-
- .ruby-version
|
88
|
-
- .travis.yml
|
79
|
+
- ".gitignore"
|
80
|
+
- ".ruby-gemset"
|
81
|
+
- ".ruby-version"
|
82
|
+
- ".travis.yml"
|
89
83
|
- CHANGELOG.rdoc
|
90
84
|
- Gemfile
|
91
85
|
- README.rdoc
|
@@ -125,17 +119,17 @@ require_paths:
|
|
125
119
|
- lib
|
126
120
|
required_ruby_version: !ruby/object:Gem::Requirement
|
127
121
|
requirements:
|
128
|
-
- -
|
122
|
+
- - ">="
|
129
123
|
- !ruby/object:Gem::Version
|
130
124
|
version: '0'
|
131
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
126
|
requirements:
|
133
|
-
- -
|
127
|
+
- - ">="
|
134
128
|
- !ruby/object:Gem::Version
|
135
129
|
version: '0'
|
136
130
|
requirements: []
|
137
131
|
rubyforge_project:
|
138
|
-
rubygems_version: 2.
|
132
|
+
rubygems_version: 2.5.1
|
139
133
|
signing_key:
|
140
134
|
specification_version: 4
|
141
135
|
summary: Add up / down voting ability to Mongoid documents
|