unread 0.10.1 → 0.11.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 +19 -8
- data/Appraisals +29 -10
- data/MIT-LICENSE +1 -1
- data/README.md +27 -3
- data/gemfiles/rails_4_0.gemfile +2 -0
- data/gemfiles/rails_4_1.gemfile +3 -1
- data/gemfiles/rails_4_2.gemfile +4 -2
- data/gemfiles/rails_5_0.gemfile +4 -2
- data/gemfiles/rails_5_1.gemfile +4 -2
- data/gemfiles/rails_5_2.gemfile +4 -2
- data/gemfiles/rails_6_0.gemfile +10 -0
- data/lib/unread/reader_scopes.rb +3 -3
- data/lib/unread/version.rb +1 -1
- data/unread.gemspec +2 -2
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da2c0da709d4464ceda393f45c8fa5aa6858c3bf458cbd75351491145a9b4905
|
4
|
+
data.tar.gz: b6a4938837521be8b1a86e38aa2b181572cf4ec2731b765389e71538a3822a0a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz: '
|
6
|
+
metadata.gz: 9b3980715732e4f3dc0fbf2e63b3367322b6f3c03ced30516b6cba94e31e4b54e6a707ae192e4aa5a00fd2ad83b3501c93ba7f89c3d9081903fc36966a183765
|
7
|
+
data.tar.gz: '0228314b73218e74d9583860892b77d9fd1f9ed3f41ff9c07b6985095e895be1b609fb4ac9befa34b64c3352b45ffb0c229295e74c1d16e7fdfaf7c7b6e34ee4'
|
data/.travis.yml
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 2.
|
4
|
-
- 2.
|
5
|
-
- 2.
|
6
|
-
- 2.5.0
|
3
|
+
- 2.4.6
|
4
|
+
- 2.5.5
|
5
|
+
- 2.6.3
|
7
6
|
gemfile:
|
7
|
+
- gemfiles/rails_6_0.gemfile
|
8
8
|
- gemfiles/rails_5_2.gemfile
|
9
9
|
- gemfiles/rails_5_1.gemfile
|
10
10
|
- gemfiles/rails_5_0.gemfile
|
@@ -13,13 +13,19 @@ gemfile:
|
|
13
13
|
- gemfiles/rails_4_0.gemfile
|
14
14
|
matrix:
|
15
15
|
exclude:
|
16
|
-
- rvm: 2.4.
|
16
|
+
- rvm: 2.4.6
|
17
17
|
gemfile: gemfiles/rails_4_0.gemfile
|
18
|
-
- rvm: 2.4.
|
18
|
+
- rvm: 2.4.6
|
19
19
|
gemfile: gemfiles/rails_4_1.gemfile
|
20
|
-
- rvm: 2.
|
20
|
+
- rvm: 2.4.6
|
21
|
+
gemfile: gemfiles/rails_6_0.gemfile
|
22
|
+
- rvm: 2.5.5
|
21
23
|
gemfile: gemfiles/rails_4_0.gemfile
|
22
|
-
- rvm: 2.5.
|
24
|
+
- rvm: 2.5.5
|
25
|
+
gemfile: gemfiles/rails_4_1.gemfile
|
26
|
+
- rvm: 2.6.3
|
27
|
+
gemfile: gemfiles/rails_4_0.gemfile
|
28
|
+
- rvm: 2.6.3
|
23
29
|
gemfile: gemfiles/rails_4_1.gemfile
|
24
30
|
before_install: gem update bundler
|
25
31
|
sudo: false
|
@@ -27,7 +33,12 @@ env:
|
|
27
33
|
- DB=sqlite
|
28
34
|
- DB=mysql
|
29
35
|
- DB=postgres
|
36
|
+
services:
|
37
|
+
- mysql
|
38
|
+
- postgres
|
30
39
|
before_script:
|
31
40
|
- gem update --system # https://github.com/travis-ci/travis-ci/issues/8978
|
32
41
|
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'create database IF NOT EXISTS unread_test;'; fi"
|
33
42
|
- sh -c "if [ '$DB' = 'postgres' ]; then psql -c 'create database unread_test;' -U postgres; fi"
|
43
|
+
addons:
|
44
|
+
postgresql: "9.4"
|
data/Appraisals
CHANGED
@@ -1,29 +1,48 @@
|
|
1
|
+
appraise "rails-6-0" do
|
2
|
+
gem "activerecord", "~> 6.0.0.beta3"
|
3
|
+
gem "mysql2", ">= 0.4.4"
|
4
|
+
gem "pg", ">= 0.18", "< 2.0"
|
5
|
+
gem "sqlite3", "~> 1.4"
|
6
|
+
end
|
7
|
+
|
1
8
|
appraise "rails-5-2" do
|
2
|
-
gem "activerecord", "~> 5.2.
|
3
|
-
gem "mysql2", ">= 0.
|
9
|
+
gem "activerecord", "~> 5.2.3"
|
10
|
+
gem "mysql2", ">= 0.4.4", "< 0.6.0"
|
11
|
+
gem "pg", ">= 0.18", "< 2.0"
|
12
|
+
gem "sqlite3", "~> 1.3", ">= 1.3.6"
|
4
13
|
end
|
5
14
|
|
6
15
|
appraise "rails-5-1" do
|
7
|
-
gem "activerecord", "~> 5.1.
|
8
|
-
gem
|
16
|
+
gem "activerecord", "~> 5.1.7"
|
17
|
+
gem "mysql2", ">= 0.3.18", "< 0.6.0"
|
18
|
+
gem "pg", ">= 0.18", "< 2.0"
|
19
|
+
gem "sqlite3", "~> 1.3", ">= 1.3.6"
|
9
20
|
end
|
10
21
|
|
11
22
|
appraise "rails-5-0" do
|
12
|
-
gem "activerecord", "~> 5.0.
|
13
|
-
gem 'mysql2', '>= 0.3.18', '< 0.
|
23
|
+
gem "activerecord", "~> 5.0.7"
|
24
|
+
gem 'mysql2', '>= 0.3.18', '< 0.6.0'
|
25
|
+
gem "pg", ">= 0.18", "< 2.0"
|
26
|
+
gem 'sqlite3', '~> 1.3.6'
|
14
27
|
end
|
15
28
|
|
16
29
|
appraise "rails-4-2" do
|
17
|
-
gem "activerecord", "~> 4.2.
|
18
|
-
gem 'mysql2', '>= 0.3.13', '< 0.
|
30
|
+
gem "activerecord", "~> 4.2.11"
|
31
|
+
gem 'mysql2', '>= 0.3.13', '< 0.6.0'
|
32
|
+
gem "pg", "~> 0.15"
|
33
|
+
gem 'sqlite3', '~> 1.3.6'
|
19
34
|
end
|
20
35
|
|
21
36
|
appraise "rails-4-1" do
|
22
|
-
gem "activerecord", "~> 4.1.
|
23
|
-
gem
|
37
|
+
gem "activerecord", "~> 4.1.16"
|
38
|
+
gem 'mysql2', '~> 0.3.13'
|
39
|
+
gem "pg", "~> 0.11"
|
40
|
+
gem 'sqlite3', '~> 1.3.6'
|
24
41
|
end
|
25
42
|
|
26
43
|
appraise "rails-4-0" do
|
27
44
|
gem "activerecord", "~> 4.0.13"
|
28
45
|
gem "mysql2", '~> 0.3.10'
|
46
|
+
gem "pg", "~> 0.11"
|
47
|
+
gem 'sqlite3', '~> 1.3.6'
|
29
48
|
end
|
data/MIT-LICENSE
CHANGED
data/README.md
CHANGED
@@ -19,8 +19,8 @@ Ruby gem to manage read/unread status of ActiveRecord objects - and it's fast.
|
|
19
19
|
|
20
20
|
## Requirements
|
21
21
|
|
22
|
-
* Ruby 2.
|
23
|
-
* Rails 4.0 or newer (including Rails
|
22
|
+
* Ruby 2.4 or newer
|
23
|
+
* Rails 4.0 or newer (including Rails 6)
|
24
24
|
* MySQL, PostgreSQL or SQLite
|
25
25
|
* Needs a timestamp field in your models (like created_at or updated_at) with a database index on it
|
26
26
|
|
@@ -160,6 +160,30 @@ users[1].have_read?(message2)
|
|
160
160
|
Message.cleanup_read_marks!
|
161
161
|
```
|
162
162
|
|
163
|
+
## Getting read/unread stats through a relationship
|
164
|
+
|
165
|
+
```ruby
|
166
|
+
class Document < ApplicationRecord
|
167
|
+
has_many :comments
|
168
|
+
end
|
169
|
+
|
170
|
+
class Comment < ApplicationRecord
|
171
|
+
acts_as_readable on: :created_at
|
172
|
+
belongs_to :document
|
173
|
+
end
|
174
|
+
|
175
|
+
# Get unread comments count for a document
|
176
|
+
document = Document.find(1)
|
177
|
+
default_hash = Hash.new { |h, k| h[k] = { unread: 0, total: 0 } }
|
178
|
+
document.comments.with_read_marks_for(current_user).reduce(default_hash) do |hash, comment|
|
179
|
+
hash[comment.id][:unread] += 1 if comment.unread?(current_user)
|
180
|
+
hash[comment.id][:total] += 1
|
181
|
+
hash
|
182
|
+
end
|
183
|
+
# => {20=>{:unread=>1, :total=>10}, 82=>{:unread=>0, :total=>4}
|
184
|
+
```
|
185
|
+
|
186
|
+
Using `with_read_marks_for` here is the key. It uses just one query and makes sure that the following `unread?` invocations use the result of the first query.
|
163
187
|
|
164
188
|
## How does it work?
|
165
189
|
|
@@ -199,4 +223,4 @@ AND messages.created_at > '2010-10-20 08:50:00'
|
|
199
223
|
Hint: You should add a database index on `messages.created_at`.
|
200
224
|
|
201
225
|
|
202
|
-
Copyright (c) 2010-
|
226
|
+
Copyright (c) 2010-2019 [Georg Ledermann](http://www.georg-ledermann.de) and [contributors](https://github.com/ledermann/unread/graphs/contributors), released under the MIT license
|
data/gemfiles/rails_4_0.gemfile
CHANGED
data/gemfiles/rails_4_1.gemfile
CHANGED
data/gemfiles/rails_4_2.gemfile
CHANGED
data/gemfiles/rails_5_0.gemfile
CHANGED
data/gemfiles/rails_5_1.gemfile
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
|
-
gem "activerecord", "~> 5.1.
|
6
|
-
gem "mysql2", ">= 0.3.18", "< 0.
|
5
|
+
gem "activerecord", "~> 5.1.7"
|
6
|
+
gem "mysql2", ">= 0.3.18", "< 0.6.0"
|
7
|
+
gem "pg", ">= 0.18", "< 2.0"
|
8
|
+
gem "sqlite3", "~> 1.3", ">= 1.3.6"
|
7
9
|
|
8
10
|
gemspec path: "../"
|
data/gemfiles/rails_5_2.gemfile
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
|
-
gem "activerecord", "~> 5.2.
|
6
|
-
gem "mysql2", ">= 0.
|
5
|
+
gem "activerecord", "~> 5.2.3"
|
6
|
+
gem "mysql2", ">= 0.4.4", "< 0.6.0"
|
7
|
+
gem "pg", ">= 0.18", "< 2.0"
|
8
|
+
gem "sqlite3", "~> 1.3", ">= 1.3.6"
|
7
9
|
|
8
10
|
gemspec path: "../"
|
data/lib/unread/reader_scopes.rb
CHANGED
@@ -12,7 +12,7 @@ module Unread
|
|
12
12
|
|
13
13
|
joins "LEFT JOIN #{ReadMark.quoted_table_name}
|
14
14
|
ON #{ReadMark.quoted_table_name}.readable_type = '#{readable.class.readable_parent.name}'
|
15
|
-
AND (#{ReadMark.quoted_table_name}.readable_id = #{readable.id} OR #{ReadMark.quoted_table_name}.readable_id IS NULL)
|
15
|
+
AND (#{ReadMark.quoted_table_name}.readable_id = #{quote_bound_value(readable.id)} OR #{ReadMark.quoted_table_name}.readable_id IS NULL)
|
16
16
|
AND #{ReadMark.quoted_table_name}.reader_id = #{quoted_table_name}.#{quoted_primary_key}
|
17
17
|
AND #{ReadMark.quoted_table_name}.reader_type = '#{connection.quote_string base_class.name}'
|
18
18
|
AND #{ReadMark.quoted_table_name}.timestamp >= '#{connection.quoted_date readable.send(readable.class.readable_options[:on])}'"
|
@@ -31,8 +31,8 @@ module Unread
|
|
31
31
|
|
32
32
|
join_read_marks(readable).select("#{quoted_table_name}.*,
|
33
33
|
#{ReadMark.quoted_table_name}.id AS read_mark_id,
|
34
|
-
#{quote_bound_value
|
35
|
-
#{readable.id} AS read_mark_readable_id")
|
34
|
+
#{quote_bound_value(readable.class.name)}#{postgresql_string_cast} AS read_mark_readable_type,
|
35
|
+
#{quote_bound_value(readable.id)} AS read_mark_readable_id")
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
data/lib/unread/version.rb
CHANGED
data/unread.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.homepage = "https://github.com/ledermann/unread"
|
13
13
|
s.summary = %q{Manages read/unread status of ActiveRecord objects}
|
14
14
|
s.description = %q{This gem creates a scope for unread objects and adds methods to mark objects as read }
|
15
|
-
s.required_ruby_version = '>= 2.
|
15
|
+
s.required_ruby_version = '>= 2.4'
|
16
16
|
|
17
17
|
s.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
18
|
f.match(%r{^(test|spec|features)/})
|
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.add_development_dependency 'timecop'
|
29
29
|
s.add_development_dependency 'sqlite3'
|
30
30
|
s.add_development_dependency 'mysql2'
|
31
|
-
s.add_development_dependency 'pg'
|
31
|
+
s.add_development_dependency 'pg'
|
32
32
|
s.add_development_dependency 'rspec'
|
33
33
|
s.add_development_dependency 'simplecov'
|
34
34
|
s.add_development_dependency 'term-ansicolor'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unread
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Georg Ledermann
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -98,16 +98,16 @@ dependencies:
|
|
98
98
|
name: pg
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
110
|
+
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rspec
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -201,6 +201,7 @@ files:
|
|
201
201
|
- gemfiles/rails_5_0.gemfile
|
202
202
|
- gemfiles/rails_5_1.gemfile
|
203
203
|
- gemfiles/rails_5_2.gemfile
|
204
|
+
- gemfiles/rails_6_0.gemfile
|
204
205
|
- lib/generators/unread/migration/migration_generator.rb
|
205
206
|
- lib/generators/unread/migration/templates/migration.rb
|
206
207
|
- lib/generators/unread/polymorphic_reader_migration/polymorphic_reader_migration_generator.rb
|
@@ -227,15 +228,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
227
228
|
requirements:
|
228
229
|
- - ">="
|
229
230
|
- !ruby/object:Gem::Version
|
230
|
-
version: '2.
|
231
|
+
version: '2.4'
|
231
232
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
232
233
|
requirements:
|
233
234
|
- - ">="
|
234
235
|
- !ruby/object:Gem::Version
|
235
236
|
version: '0'
|
236
237
|
requirements: []
|
237
|
-
|
238
|
-
rubygems_version: 2.7.6
|
238
|
+
rubygems_version: 3.0.6
|
239
239
|
signing_key:
|
240
240
|
specification_version: 4
|
241
241
|
summary: Manages read/unread status of ActiveRecord objects
|