acts_as_votable 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,87 +1,98 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- acts_as_votable (0.1.3)
4
+ acts_as_votable (0.2.0)
5
5
  rails (>= 3.0.0)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
- abstract (1.0.0)
11
- actionmailer (3.0.9)
12
- actionpack (= 3.0.9)
13
- mail (~> 2.2.19)
14
- actionpack (3.0.9)
15
- activemodel (= 3.0.9)
16
- activesupport (= 3.0.9)
17
- builder (~> 2.1.2)
18
- erubis (~> 2.6.6)
19
- i18n (~> 0.5.0)
20
- rack (~> 1.2.1)
21
- rack-mount (~> 0.6.14)
22
- rack-test (~> 0.5.7)
23
- tzinfo (~> 0.3.23)
24
- activemodel (3.0.9)
25
- activesupport (= 3.0.9)
26
- builder (~> 2.1.2)
27
- i18n (~> 0.5.0)
28
- activerecord (3.0.9)
29
- activemodel (= 3.0.9)
30
- activesupport (= 3.0.9)
31
- arel (~> 2.0.10)
32
- tzinfo (~> 0.3.23)
33
- activeresource (3.0.9)
34
- activemodel (= 3.0.9)
35
- activesupport (= 3.0.9)
36
- activesupport (3.0.9)
37
- arel (2.0.10)
38
- builder (2.1.2)
39
- diff-lcs (1.1.2)
40
- erubis (2.6.6)
41
- abstract (>= 1.0.0)
42
- i18n (0.5.0)
43
- mail (2.2.19)
44
- activesupport (>= 2.3.6)
10
+ actionmailer (3.2.3)
11
+ actionpack (= 3.2.3)
12
+ mail (~> 2.4.4)
13
+ actionpack (3.2.3)
14
+ activemodel (= 3.2.3)
15
+ activesupport (= 3.2.3)
16
+ builder (~> 3.0.0)
17
+ erubis (~> 2.7.0)
18
+ journey (~> 1.0.1)
19
+ rack (~> 1.4.0)
20
+ rack-cache (~> 1.2)
21
+ rack-test (~> 0.6.1)
22
+ sprockets (~> 2.1.2)
23
+ activemodel (3.2.3)
24
+ activesupport (= 3.2.3)
25
+ builder (~> 3.0.0)
26
+ activerecord (3.2.3)
27
+ activemodel (= 3.2.3)
28
+ activesupport (= 3.2.3)
29
+ arel (~> 3.0.2)
30
+ tzinfo (~> 0.3.29)
31
+ activeresource (3.2.3)
32
+ activemodel (= 3.2.3)
33
+ activesupport (= 3.2.3)
34
+ activesupport (3.2.3)
35
+ i18n (~> 0.6)
36
+ multi_json (~> 1.0)
37
+ arel (3.0.2)
38
+ builder (3.0.0)
39
+ diff-lcs (1.1.3)
40
+ erubis (2.7.0)
41
+ hike (1.2.1)
42
+ i18n (0.6.0)
43
+ journey (1.0.3)
44
+ json (1.6.6)
45
+ mail (2.4.4)
45
46
  i18n (>= 0.4.0)
46
47
  mime-types (~> 1.16)
47
48
  treetop (~> 1.4.8)
48
- mime-types (1.16)
49
- polyglot (0.3.2)
50
- rack (1.2.3)
51
- rack-mount (0.6.14)
52
- rack (>= 1.0.0)
53
- rack-test (0.5.7)
49
+ mime-types (1.18)
50
+ multi_json (1.2.0)
51
+ polyglot (0.3.3)
52
+ rack (1.4.1)
53
+ rack-cache (1.2)
54
+ rack (>= 0.4)
55
+ rack-ssl (1.3.2)
56
+ rack
57
+ rack-test (0.6.1)
54
58
  rack (>= 1.0)
55
- rails (3.0.9)
56
- actionmailer (= 3.0.9)
57
- actionpack (= 3.0.9)
58
- activerecord (= 3.0.9)
59
- activeresource (= 3.0.9)
60
- activesupport (= 3.0.9)
59
+ rails (3.2.3)
60
+ actionmailer (= 3.2.3)
61
+ actionpack (= 3.2.3)
62
+ activerecord (= 3.2.3)
63
+ activeresource (= 3.2.3)
64
+ activesupport (= 3.2.3)
61
65
  bundler (~> 1.0)
62
- railties (= 3.0.9)
63
- railties (3.0.9)
64
- actionpack (= 3.0.9)
65
- activesupport (= 3.0.9)
66
+ railties (= 3.2.3)
67
+ railties (3.2.3)
68
+ actionpack (= 3.2.3)
69
+ activesupport (= 3.2.3)
70
+ rack-ssl (~> 1.3.2)
66
71
  rake (>= 0.8.7)
67
72
  rdoc (~> 3.4)
68
- thor (~> 0.14.4)
69
- rake (0.9.2)
70
- rdoc (3.8)
71
- rspec (2.3.0)
72
- rspec-core (~> 2.3.0)
73
- rspec-expectations (~> 2.3.0)
74
- rspec-mocks (~> 2.3.0)
75
- rspec-core (2.3.1)
76
- rspec-expectations (2.3.0)
77
- diff-lcs (~> 1.1.2)
78
- rspec-mocks (2.3.0)
79
- sqlite3 (1.3.3)
73
+ thor (~> 0.14.6)
74
+ rake (0.9.2.2)
75
+ rdoc (3.12)
76
+ json (~> 1.4)
77
+ rspec (2.9.0)
78
+ rspec-core (~> 2.9.0)
79
+ rspec-expectations (~> 2.9.0)
80
+ rspec-mocks (~> 2.9.0)
81
+ rspec-core (2.9.0)
82
+ rspec-expectations (2.9.1)
83
+ diff-lcs (~> 1.1.3)
84
+ rspec-mocks (2.9.0)
85
+ sprockets (2.1.2)
86
+ hike (~> 1.2)
87
+ rack (~> 1.0)
88
+ tilt (~> 1.1, != 1.3.0)
89
+ sqlite3 (1.3.5)
80
90
  thor (0.14.6)
91
+ tilt (1.3.3)
81
92
  treetop (1.4.10)
82
93
  polyglot
83
94
  polyglot (>= 0.3.1)
84
- tzinfo (0.3.29)
95
+ tzinfo (0.3.33)
85
96
 
86
97
  PLATFORMS
87
98
  ruby
@@ -77,7 +77,7 @@ Revisiting the previous example of code.
77
77
  # negative votes
78
78
  @post.downvote_from @user2
79
79
  @post.vote :voter => @user2, :vote => 'bad'
80
-
80
+
81
81
  # tally them up!
82
82
  @post.votes.size # => 5
83
83
  @post.likes.size # => 3
@@ -85,6 +85,33 @@ Revisiting the previous example of code.
85
85
  @post.dislikes.size # => 2
86
86
  @post.downvotes.size # => 2
87
87
 
88
+ Active Record scopes are provided to make life easier.
89
+
90
+ @post.votes.up.by_type(User)
91
+ @post.votes.down
92
+ @user1.votes.up
93
+ @user1.votes.down
94
+ @user1.votes.up.by_type(Post)
95
+
96
+ Once scoping is complete, you can also trigger a get for the
97
+ voter/votable
98
+
99
+ @post.votes.up.by_type(User).voters
100
+ @post.votes.down.by_type(User).voters
101
+
102
+ @user.votes.up.for_type(Post).votables
103
+ @user.votes.up.votables
104
+
105
+ You can also 'unvote' a model to remove a previous vote.
106
+
107
+ @post.liked_by @user1
108
+ @post.unlike_by @user1
109
+
110
+ @post.disliked_by @user1
111
+ @post.undisliked_by @user1
112
+
113
+ Unvoting works for both positive and negative votes.
114
+
88
115
  ### The Voter
89
116
 
90
117
  You can have your voters ``acts_as_voter`` to provide some reserve functionality.
@@ -1,3 +1,3 @@
1
1
  module ActsAsVotable
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -26,13 +26,20 @@ module ActsAsVotable
26
26
 
27
27
  :down_votes => [
28
28
  :false_votes, :downs, :downvotes, :dislikes, :negatives
29
+ ],
30
+ :unvote => [
31
+ :unliked_by, :undisliked_by
29
32
  ]
30
-
31
33
  }
32
34
 
33
35
  base.class_eval do
34
36
 
35
37
  belongs_to :votable, :polymorphic => true
38
+ has_many :votes, :class_name => "ActsAsVotable::Vote", :as => :votable do
39
+ def voters
40
+ includes(:voter).map(&:voter)
41
+ end
42
+ end
36
43
 
37
44
  aliases.each do |method, links|
38
45
  links.each do |new_method|
@@ -70,12 +77,12 @@ module ActsAsVotable
70
77
  end
71
78
 
72
79
  # find the vote
73
- votes = find_votes({
80
+ _votes_ = find_votes({
74
81
  :voter_id => options[:voter].id,
75
82
  :voter_type => options[:voter].class.name
76
83
  })
77
84
 
78
- if votes.count == 0
85
+ if _votes_.count == 0
79
86
  # this voter has never voted
80
87
  vote = ActsAsVotable::Vote.new(
81
88
  :votable => self,
@@ -83,7 +90,7 @@ module ActsAsVotable
83
90
  )
84
91
  else
85
92
  # this voter is potentially changing his vote
86
- vote = votes.first
93
+ vote = _votes_.first
87
94
  end
88
95
 
89
96
  last_update = vote.updated_at
@@ -101,6 +108,17 @@ module ActsAsVotable
101
108
 
102
109
  end
103
110
 
111
+ def unvote args = {}
112
+ return false if args[:voter].nil?
113
+ _votes_ = find_votes(:voter_id => args[:voter].id, :voter_type => args[:voter].class.name)
114
+
115
+ return true if _votes_.size == 0
116
+ _votes_.each(&:destroy)
117
+ update_cached_votes
118
+ self.vote_registered = false if votes.count == 0
119
+ return true
120
+ end
121
+
104
122
  def vote_up voter
105
123
  self.vote :voter => voter, :vote => true
106
124
  end
@@ -133,9 +151,8 @@ module ActsAsVotable
133
151
 
134
152
  # results
135
153
  def find_votes extra_conditions = {}
136
- ActsAsVotable::Vote.find(:all, :conditions => default_conditions.merge(extra_conditions))
154
+ votes.where(extra_conditions)
137
155
  end
138
- alias :votes :find_votes
139
156
 
140
157
  def up_votes
141
158
  find_votes(:vote_flag => true)
@@ -151,27 +168,27 @@ module ActsAsVotable
151
168
  if !skip_cache && self.respond_to?(:cached_votes_total)
152
169
  return self.send(:cached_votes_total)
153
170
  end
154
- find_votes.size
171
+ find_votes.count
155
172
  end
156
173
 
157
174
  def count_votes_up skip_cache = false
158
175
  if !skip_cache && self.respond_to?(:cached_votes_up)
159
176
  return self.send(:cached_votes_up)
160
177
  end
161
- up_votes.size
178
+ up_votes.count
162
179
  end
163
180
 
164
181
  def count_votes_down skip_cache = false
165
182
  if !skip_cache && self.respond_to?(:cached_votes_down)
166
183
  return self.send(:cached_votes_down)
167
184
  end
168
- down_votes.size
185
+ down_votes.count
169
186
  end
170
187
 
171
188
  # voters
172
189
  def voted_on_by? voter
173
190
  votes = find_votes :voter_id => voter.id, :voter_type => voter.class.name
174
- votes.size > 0
191
+ votes.count > 0
175
192
  end
176
193
 
177
194
  end
@@ -13,6 +13,11 @@ module ActsAsVotable
13
13
  belongs_to :votable, :polymorphic => true
14
14
  belongs_to :voter, :polymorphic => true
15
15
 
16
+ scope :up, where(:vote_flag => true)
17
+ scope :down, where(:vote_flag => false)
18
+ scope :for_type, lambda{ |klass| where(:votable_type => klass) }
19
+ scope :by_type, lambda{ |klass| where(:voter_type => klass) }
20
+
16
21
  validates_presence_of :votable_id
17
22
  validates_presence_of :voter_id
18
23
 
@@ -5,13 +5,19 @@ module ActsAsVotable
5
5
 
6
6
  # allow user to define these
7
7
  aliases = {
8
- :vote_up_for => [:likes, :upvotes, :up_votes],
9
- :vote_down_for => [:dislikes, :downvotes, :down_votes]
8
+ :vote_up_for => [:likes, :upvotes, :up_votes],
9
+ :vote_down_for => [:dislikes, :downvotes, :down_votes],
10
+ :unvote_for => [:unlike, :undislike]
10
11
  }
11
12
 
12
13
  base.class_eval do
13
14
 
14
15
  belongs_to :voter, :polymorphic => true
16
+ has_many :votes, :class_name => "ActsAsVotable::Vote", :as => :voter do
17
+ def votables
18
+ includes(:votable).map(&:votable)
19
+ end
20
+ end
15
21
 
16
22
  aliases.each do |method, links|
17
23
  links.each do |new_method|
@@ -23,19 +29,12 @@ module ActsAsVotable
23
29
 
24
30
  end
25
31
 
26
- def default_conditions
27
- {
28
- :voter_id => self.id,
29
- :voter_type => self.class.name
30
- }
31
- end
32
-
33
32
  # voting
34
33
  def vote args
35
34
  args[:votable].vote args.merge({:voter => self})
36
35
  end
37
36
 
38
- def vote_up_for model
37
+ def vote_up_for model=nil
39
38
  vote :votable => model, :vote => true
40
39
  end
41
40
 
@@ -43,6 +42,10 @@ module ActsAsVotable
43
42
  vote :votable => model, :vote => false
44
43
  end
45
44
 
45
+ def unvote_for model
46
+ model.unvote :voter => self
47
+ end
48
+
46
49
  # results
47
50
  def voted_on? votable
48
51
  votes = find_votes(:votable_id => votable.id, :votable_type => votable.class.name)
@@ -58,9 +61,8 @@ module ActsAsVotable
58
61
  alias :voted_as_when_voted_for :voted_as_when_voting_on
59
62
 
60
63
  def find_votes extra_conditions = {}
61
- ActsAsVotable::Vote.find(:all, :conditions => default_conditions.merge(extra_conditions))
64
+ votes.where(extra_conditions)
62
65
  end
63
- alias :votes :find_votes
64
66
 
65
67
  def find_up_votes
66
68
  find_votes :vote_flag => true
@@ -82,6 +84,5 @@ module ActsAsVotable
82
84
  find_votes_for_class klass, :vote_flag => false
83
85
  end
84
86
 
85
-
86
87
  end
87
88
  end
@@ -14,7 +14,7 @@ describe ActsAsVotable::Votable do
14
14
  it "should be votable" do
15
15
  Votable.should be_votable
16
16
  end
17
-
17
+
18
18
  describe "voting on a votable object" do
19
19
 
20
20
  before(:each) do
@@ -24,7 +24,7 @@ describe ActsAsVotable::Votable do
24
24
 
25
25
  @voter2 = Voter.new(:name => 'a new person')
26
26
  @voter2.save
27
-
27
+
28
28
  @votable = Votable.new(:name => 'a voting model')
29
29
  @votable.save
30
30
  end
@@ -37,7 +37,7 @@ describe ActsAsVotable::Votable do
37
37
  @votable.vote :voter => @voter, :vote => 'yes'
38
38
  @votable.votes.size.should == 1
39
39
  end
40
-
40
+
41
41
  it "should have one vote when voted on twice by the same person" do
42
42
  @votable.vote :voter => @voter, :vote => 'yes'
43
43
  @votable.vote :voter => @voter, :vote => 'no'
@@ -87,7 +87,7 @@ describe ActsAsVotable::Votable do
87
87
  @votable.vote :voter => @voter, :vote => 'yes'
88
88
  @votable.vote_registered?.should be false
89
89
  end
90
-
90
+
91
91
  it "should count the vote as registered if the voter has voted and the vote has changed" do
92
92
  @votable.vote :voter => @voter, :vote => true
93
93
  @votable.vote :voter => @voter, :vote => 'dislike'
@@ -99,10 +99,35 @@ describe ActsAsVotable::Votable do
99
99
  @votable.voted_on_by?(@voter).should be true
100
100
  end
101
101
 
102
+ it "should unvote a positive vote" do
103
+ @votable.vote :voter => @voter
104
+ @votable.unvote :voter => @voter
105
+ @votable.find_votes.count.should == 0
106
+ end
107
+
108
+ it "should set the votable to unregistered after unvoting" do
109
+ @votable.vote :voter => @voter
110
+ @votable.unvote :voter => @voter
111
+ @votable.vote_registered?.should be false
112
+ end
113
+
114
+ it "should unvote a negative vote" do
115
+ @votable.vote :voter => @voter, :vote => 'no'
116
+ @votable.unvote :voter => @voter
117
+ @votable.find_votes.count.should == 0
118
+ end
119
+
120
+ it "should unvote only the from a single voter" do
121
+ @votable.vote :voter => @voter
122
+ @votable.vote :voter => @voter2
123
+ @votable.unvote :voter => @voter
124
+ @votable.find_votes.count.should == 1
125
+ end
126
+
102
127
  it "should be contained to instances" do
103
128
  votable2 = Votable.new(:name => '2nd votable')
104
129
  votable2.save
105
-
130
+
106
131
  @votable.vote :voter => @voter, :vote => false
107
132
  votable2.vote :voter => @voter, :vote => true
108
133
  votable2.vote :voter => @voter, :vote => true
@@ -135,6 +160,18 @@ describe ActsAsVotable::Votable do
135
160
  @votable_cache.cached_votes_total.should == 1
136
161
  end
137
162
 
163
+ it "should update cached total votes when a vote up is removed" do
164
+ @votable_cache.vote :voter => @voter, :vote => 'true'
165
+ @votable_cache.unvote :voter => @voter
166
+ @votable_cache.cached_votes_total.should == 0
167
+ end
168
+
169
+ it "should update cached total votes when a vote down is removed" do
170
+ @votable_cache.vote :voter => @voter, :vote => 'false'
171
+ @votable_cache.unvote :voter => @voter
172
+ @votable_cache.cached_votes_total.should == 0
173
+ end
174
+
138
175
  it "should update cached up votes if there is an up vote column" do
139
176
  @votable_cache.cached_votes_up = 50
140
177
  @votable_cache.vote :voter => @voter
@@ -148,6 +185,18 @@ describe ActsAsVotable::Votable do
148
185
  @votable_cache.cached_votes_down.should == 1
149
186
  end
150
187
 
188
+ it "should update cached up votes when a vote up is removed" do
189
+ @votable_cache.vote :voter => @voter, :vote => 'true'
190
+ @votable_cache.unvote :voter => @voter
191
+ @votable_cache.cached_votes_up.should == 0
192
+ end
193
+
194
+ it "should update cached down votes when a vote down is removed" do
195
+ @votable_cache.vote :voter => @voter, :vote => 'false'
196
+ @votable_cache.unvote :voter => @voter
197
+ @votable_cache.cached_votes_down.should == 0
198
+ end
199
+
151
200
  it "should select from cached total votes if there a total column" do
152
201
  @votable_cache.vote :voter => @voter
153
202
  @votable_cache.cached_votes_total = 50
@@ -14,7 +14,7 @@ describe ActsAsVotable::Voter do
14
14
  it "should be a voter" do
15
15
  Votable.should be_votable
16
16
  end
17
-
17
+
18
18
  describe "voting by a voter" do
19
19
 
20
20
  before(:each) do
@@ -24,7 +24,7 @@ describe ActsAsVotable::Voter do
24
24
 
25
25
  @voter2 = Voter.new(:name => 'a new person')
26
26
  @voter2.save
27
-
27
+
28
28
  @votable = Votable.new(:name => 'a voting model')
29
29
  @votable.save
30
30
 
@@ -63,44 +63,59 @@ describe ActsAsVotable::Voter do
63
63
  it "should allow the voter to vote up a model" do
64
64
  @voter.vote_up_for @votable
65
65
  @votable.up_votes.first.voter.should == @voter
66
+ @votable.votes.up.first.voter.should == @voter
66
67
  end
67
68
 
68
69
  it "should allow the voter to vote down a model" do
69
70
  @voter.vote_down_for @votable
70
71
  @votable.down_votes.first.voter.should == @voter
72
+ @votable.votes.down.first.voter.should == @voter
73
+ end
74
+
75
+ it "should allow the voter to unvote a model" do
76
+ @voter.vote_up_for @votable
77
+ @voter.unvote_for @votable
78
+ @votable.find_votes.size.should == 0
79
+ @votable.votes.count.should == 0
71
80
  end
72
81
 
73
82
  it "should get all of the voters votes" do
74
83
  @voter.vote_up_for @votable
75
84
  @voter.find_votes.size.should == 1
85
+ @voter.votes.up.count.should == 1
76
86
  end
77
87
 
78
88
  it "should get all of the voters up votes" do
79
89
  @voter.vote_up_for @votable
80
90
  @voter.find_up_votes.size.should == 1
91
+ @voter.votes.up.count.should == 1
81
92
  end
82
93
 
83
94
  it "should get all of the voters down votes" do
84
95
  @voter.vote_down_for @votable
85
96
  @voter.find_down_votes.size.should == 1
97
+ @voter.votes.down.count.should == 1
86
98
  end
87
99
 
88
100
  it "should get all of the votes votes for a class" do
89
101
  @votable.vote :voter => @voter
90
102
  @votable2.vote :voter => @voter, :vote => false
91
103
  @voter.find_votes_for_class(Votable).size.should == 2
104
+ @voter.votes.for_type(Votable).count.should == 2
92
105
  end
93
106
 
94
107
  it "should get all of the voters up votes for a class" do
95
108
  @votable.vote :voter => @voter
96
109
  @votable2.vote :voter => @voter, :vote => false
97
110
  @voter.find_up_votes_for_class(Votable).size.should == 1
111
+ @voter.votes.up.for_type(Votable).count.should == 1
98
112
  end
99
113
 
100
114
  it "should get all of the voters down votes for a class" do
101
115
  @votable.vote :voter => @voter
102
116
  @votable2.vote :voter => @voter, :vote => false
103
117
  @voter.find_down_votes_for_class(Votable).size.should == 1
118
+ @voter.votes.down.for_type(Votable).count.should == 1
104
119
  end
105
120
 
106
121
  it "should be contained to instances" do
@@ -111,6 +126,4 @@ describe ActsAsVotable::Voter do
111
126
  end
112
127
 
113
128
  end
114
-
115
-
116
129
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_votable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.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: 2011-11-30 00:00:00.000000000Z
12
+ date: 2012-04-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &16691480 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *16691480
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: sqlite3
27
- requirement: &16690620 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *16690620
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: rails
38
- requirement: &16689540 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,7 +53,12 @@ dependencies:
43
53
  version: 3.0.0
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *16689540
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 3.0.0
47
62
  description: Rails gem to allowing records to be votable
48
63
  email:
49
64
  - ryanto
@@ -85,7 +100,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
85
100
  version: '0'
86
101
  segments:
87
102
  - 0
88
- hash: -862519095556043161
103
+ hash: 2055289200548922413
89
104
  required_rubygems_version: !ruby/object:Gem::Requirement
90
105
  none: false
91
106
  requirements:
@@ -94,10 +109,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
109
  version: '0'
95
110
  segments:
96
111
  - 0
97
- hash: -862519095556043161
112
+ hash: 2055289200548922413
98
113
  requirements: []
99
114
  rubyforge_project: acts_as_votable
100
- rubygems_version: 1.8.6
115
+ rubygems_version: 1.8.21
101
116
  signing_key:
102
117
  specification_version: 3
103
118
  summary: Rails gem to allowing records to be votable