acts_as_votable 0.12.1 → 0.13.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 +5 -5
- data/.github/workflows/main.yml +44 -0
- data/.ruby-version +1 -0
- data/Appraisals +13 -7
- data/README.md +14 -15
- data/gemfiles/rails_4.gemfile +1 -1
- data/gemfiles/rails_5_1.gemfile +1 -1
- data/gemfiles/rails_5_2.gemfile +1 -1
- data/gemfiles/rails_6.gemfile +8 -0
- data/gemfiles/rails_6_1.gemfile +8 -0
- data/gemfiles/rails_6_rc1.gemfile +8 -0
- data/lib/acts_as_votable/version.rb +1 -1
- data/lib/acts_as_votable/votable.rb +7 -5
- data/spec/shared_example/votable_model.rb +2 -2
- metadata +11 -8
- data/.travis.yml +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b1843c2e0892abc19c5ecc63dd48e38fe8d48e1cdb7affc3c90d67b0419725e1
|
4
|
+
data.tar.gz: b05a72a3a7310c362233e9d54301a695a03fb72c9fb6068b2fde8e58d1e238bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a125832f11dd75fa540f90791b5bdc092b92ade7c2a34218947fa1621aae21487eb38d8664636d1113885bb878927805a10f0db5edb786c48a8339832859bd68
|
7
|
+
data.tar.gz: 23bb31cc323d1173f982b2d12895b834e26b1ede7a6293cc1343538140f2fe3f7f9c0c89daf4de4ea67d72a69b4b4bbca2c4ec53555500ec965f26ca8fb1f475
|
@@ -0,0 +1,44 @@
|
|
1
|
+
name: CI
|
2
|
+
on:
|
3
|
+
push:
|
4
|
+
branches:
|
5
|
+
- master
|
6
|
+
pull_request:
|
7
|
+
branches:
|
8
|
+
- master
|
9
|
+
|
10
|
+
jobs:
|
11
|
+
tests:
|
12
|
+
strategy:
|
13
|
+
fail-fast: false
|
14
|
+
matrix:
|
15
|
+
os:
|
16
|
+
- ubuntu
|
17
|
+
ruby:
|
18
|
+
- 2.5
|
19
|
+
- 2.6
|
20
|
+
- 2.7
|
21
|
+
gemfile:
|
22
|
+
- gemfiles/rails_5_1.gemfile
|
23
|
+
- gemfiles/rails_5_2.gemfile
|
24
|
+
- gemfiles/rails_6.gemfile
|
25
|
+
- gemfiles/rails_6_1.gemfile
|
26
|
+
continue-on-error:
|
27
|
+
- false
|
28
|
+
|
29
|
+
env:
|
30
|
+
BUNDLE_GEMFILE: "${{ matrix.gemfile }}"
|
31
|
+
runs-on: ${{ matrix.os }}-latest
|
32
|
+
continue-on-error: ${{ matrix.continue-on-error }}
|
33
|
+
steps:
|
34
|
+
- name: Checkout
|
35
|
+
uses: actions/checkout@v2
|
36
|
+
- name: Setup Ruby
|
37
|
+
uses: ruby/setup-ruby@v1
|
38
|
+
with:
|
39
|
+
ruby-version: ${{ matrix.ruby }}
|
40
|
+
bundler-cache: true
|
41
|
+
- name: Test
|
42
|
+
run: bundle exec rake spec
|
43
|
+
|
44
|
+
# use this
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.5.3
|
data/Appraisals
CHANGED
@@ -1,17 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
appraise "rails-4" do
|
4
|
-
gem "rails", "4.2.
|
5
|
-
end
|
6
|
-
|
7
|
-
appraise "rails-5" do
|
8
|
-
gem "rails", "5.0.6"
|
4
|
+
gem "rails", "4.2.11"
|
9
5
|
end
|
10
6
|
|
11
7
|
appraise "rails-5-1" do
|
12
|
-
gem "rails", "5.1.
|
8
|
+
gem "rails", "5.1.7"
|
13
9
|
end
|
14
10
|
|
15
11
|
appraise "rails-5-2" do
|
16
|
-
gem "rails", "5.2.
|
12
|
+
gem "rails", "5.2.4"
|
17
13
|
end
|
14
|
+
|
15
|
+
appraise "rails-6" do
|
16
|
+
gem "rails", "6.0.3"
|
17
|
+
gem "sqlite3", "~> 1.4"
|
18
|
+
end
|
19
|
+
|
20
|
+
appraise "rails-6-1" do
|
21
|
+
gem "rails", "6.1.0"
|
22
|
+
gem "sqlite3", "~> 1.4"
|
23
|
+
end
|
data/README.md
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# Acts As Votable (aka Acts As Likeable)
|
2
2
|
|
3
|
-
|
4
|
-
[](https://codeclimate.com/github/ryanto/acts_as_votable)
|
3
|
+

|
5
4
|
|
6
5
|
Acts As Votable is a Ruby Gem specifically written for Rails/ActiveRecord models.
|
7
6
|
The main goals of this gem are:
|
@@ -24,7 +23,7 @@ The main goals of this gem are:
|
|
24
23
|
Just add the following to your Gemfile to install the latest release.
|
25
24
|
|
26
25
|
```ruby
|
27
|
-
gem 'acts_as_votable'
|
26
|
+
gem 'acts_as_votable'
|
28
27
|
```
|
29
28
|
|
30
29
|
And follow that up with a ``bundle install``.
|
@@ -35,7 +34,7 @@ Acts As Votable uses a votes table to store all voting information. To
|
|
35
34
|
generate and run the migration just use.
|
36
35
|
|
37
36
|
rails generate acts_as_votable:migration
|
38
|
-
|
37
|
+
rails db:migrate
|
39
38
|
|
40
39
|
You will get a performance increase by adding in cached columns to your model's
|
41
40
|
tables. You will have to do this manually through your own migrations. See the
|
@@ -46,7 +45,7 @@ caching section of this document for more information.
|
|
46
45
|
### Votable Models
|
47
46
|
|
48
47
|
```ruby
|
49
|
-
class Post <
|
48
|
+
class Post < ApplicationRecord
|
50
49
|
acts_as_votable
|
51
50
|
end
|
52
51
|
|
@@ -193,15 +192,15 @@ You can add weight to your vote. The default value is 1.
|
|
193
192
|
You can have your voters `acts_as_voter` to provide some reserve functionality.
|
194
193
|
|
195
194
|
```ruby
|
196
|
-
class User <
|
195
|
+
class User < ApplicationRecord
|
197
196
|
acts_as_voter
|
198
197
|
end
|
199
198
|
|
200
199
|
@user.likes @article
|
201
200
|
|
202
|
-
@article.
|
203
|
-
@article.
|
204
|
-
@article.
|
201
|
+
@article.votes_for.size # => 1
|
202
|
+
@article.get_likes.size # => 1
|
203
|
+
@article.get_dislikes.size # => 0
|
205
204
|
```
|
206
205
|
|
207
206
|
To check if a voter has voted on a model, you can use ``voted_for?``. You can
|
@@ -274,8 +273,8 @@ because `@user` has already voted for `@shoe`.
|
|
274
273
|
@user.likes @shoe
|
275
274
|
@user.likes @shoe
|
276
275
|
|
277
|
-
@shoe.
|
278
|
-
@shoe.
|
276
|
+
@shoe.votes_for.size # => 1
|
277
|
+
@shoe.get_likes.size # => 1
|
279
278
|
```
|
280
279
|
|
281
280
|
To check if a vote counted, or registered, use `vote_registered?` on your model
|
@@ -291,9 +290,9 @@ after voting. For example:
|
|
291
290
|
@hat.disliked_by @user
|
292
291
|
@hat.vote_registered? # => true, because user changed their vote
|
293
292
|
|
294
|
-
@hat.
|
295
|
-
@hat.
|
296
|
-
@hat.
|
293
|
+
@hat.votes_for.size # => 1
|
294
|
+
@hat.get_positives.size # => 0
|
295
|
+
@hat.get_negatives.size # => 1
|
297
296
|
```
|
298
297
|
|
299
298
|
To permit duplicates entries of a same voter, use option duplicate. Also notice that this
|
@@ -368,7 +367,7 @@ not by passing `cacheable_strategy` option to `acts_as_votable` method.
|
|
368
367
|
By default, `update` strategy is used. Pass `:update_columns` as
|
369
368
|
`cacheable_strategy` if you don't want to touch model's `updated_at` column.
|
370
369
|
```ruby
|
371
|
-
class Post <
|
370
|
+
class Post < ApplicationRecord
|
372
371
|
acts_as_votable cacheable_strategy: :update_columns
|
373
372
|
end
|
374
373
|
```
|
data/gemfiles/rails_4.gemfile
CHANGED
data/gemfiles/rails_5_1.gemfile
CHANGED
data/gemfiles/rails_5_2.gemfile
CHANGED
@@ -93,14 +93,16 @@ module ActsAsVotable
|
|
93
93
|
#Allowing for a vote_weight to be associated with every vote. Could change with every voter object
|
94
94
|
vote.vote_weight = (options[:vote_weight].to_i if options[:vote_weight].present?) || 1
|
95
95
|
|
96
|
+
vote_saved = false
|
96
97
|
ActiveRecord::Base.transaction do
|
97
98
|
self.vote_registered = false
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
99
|
+
vote_saved = vote.save
|
100
|
+
if vote_saved
|
101
|
+
self.vote_registered = true if last_update != vote.updated_at
|
102
|
+
update_cached_votes(options[:vote_scope])
|
103
|
+
end
|
103
104
|
end
|
105
|
+
vote_saved
|
104
106
|
end
|
105
107
|
|
106
108
|
def unvote(args = {})
|
@@ -416,7 +416,7 @@ shared_examples "a votable_model" do
|
|
416
416
|
|
417
417
|
it do
|
418
418
|
expect(votable_cache.cached_votes_total).to eq(1)
|
419
|
-
expect(votable_cache.updated_at).to_not eq updated_at
|
419
|
+
expect(votable_cache.updated_at.to_i).to_not eq updated_at.to_i
|
420
420
|
end
|
421
421
|
end
|
422
422
|
|
@@ -425,7 +425,7 @@ shared_examples "a votable_model" do
|
|
425
425
|
|
426
426
|
it do
|
427
427
|
expect(votable_cache.cached_votes_total).to eq(1)
|
428
|
-
expect(votable_cache.updated_at).to eq updated_at
|
428
|
+
expect(votable_cache.updated_at.to_i).to eq updated_at.to_i
|
429
429
|
end
|
430
430
|
end
|
431
431
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_votable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-12-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -101,9 +101,10 @@ executables: []
|
|
101
101
|
extensions: []
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
|
+
- ".github/workflows/main.yml"
|
104
105
|
- ".gitignore"
|
105
106
|
- ".rubocop.yml"
|
106
|
-
- ".
|
107
|
+
- ".ruby-version"
|
107
108
|
- Appraisals
|
108
109
|
- Gemfile
|
109
110
|
- README.md
|
@@ -114,6 +115,9 @@ files:
|
|
114
115
|
- gemfiles/rails_5.gemfile
|
115
116
|
- gemfiles/rails_5_1.gemfile
|
116
117
|
- gemfiles/rails_5_2.gemfile
|
118
|
+
- gemfiles/rails_6.gemfile
|
119
|
+
- gemfiles/rails_6_1.gemfile
|
120
|
+
- gemfiles/rails_6_rc1.gemfile
|
117
121
|
- lib/acts_as_votable.rb
|
118
122
|
- lib/acts_as_votable/cacheable.rb
|
119
123
|
- lib/acts_as_votable/extenders/controller.rb
|
@@ -148,7 +152,7 @@ homepage: http://rubygems.org/gems/acts_as_votable
|
|
148
152
|
licenses:
|
149
153
|
- MIT
|
150
154
|
metadata: {}
|
151
|
-
post_install_message:
|
155
|
+
post_install_message:
|
152
156
|
rdoc_options: []
|
153
157
|
require_paths:
|
154
158
|
- lib
|
@@ -163,9 +167,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
163
167
|
- !ruby/object:Gem::Version
|
164
168
|
version: '0'
|
165
169
|
requirements: []
|
166
|
-
|
167
|
-
|
168
|
-
signing_key:
|
170
|
+
rubygems_version: 3.2.2
|
171
|
+
signing_key:
|
169
172
|
specification_version: 4
|
170
173
|
summary: Rails gem to allowing records to be votable
|
171
174
|
test_files:
|
data/.travis.yml
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
|
3
|
-
cache: bundler
|
4
|
-
|
5
|
-
rvm:
|
6
|
-
- 2.3.4
|
7
|
-
- 2.4.2
|
8
|
-
- 2.5.1
|
9
|
-
|
10
|
-
before_install:
|
11
|
-
- gem update --system
|
12
|
-
# Stay on Bundler 1.x (for dependency reasons as we want to support Rails 4.2.x and Ruby 2.3.x)
|
13
|
-
# More info here: https://docs.travis-ci.com/user/languages/ruby/#bundler-20
|
14
|
-
- gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
|
15
|
-
- gem install bundler -v '< 2'
|
16
|
-
|
17
|
-
gemfile:
|
18
|
-
- gemfiles/rails_4.gemfile
|
19
|
-
- gemfiles/rails_5.gemfile
|
20
|
-
- gemfiles/rails_5_1.gemfile
|
21
|
-
- gemfiles/rails_5_2.gemfile
|