acts_as_votable 0.1.3 → 0.2.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.
@@ -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