unread 0.6.1 → 0.6.2
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 +5 -0
- data/ci/Gemfile-rails-3-0 +1 -0
- data/ci/Gemfile-rails-3-1 +1 -0
- data/ci/Gemfile-rails-3-2 +1 -0
- data/ci/Gemfile-rails-4-0 +1 -0
- data/ci/Gemfile-rails-4-1 +1 -0
- data/ci/Gemfile-rails-4-2 +1 -0
- data/lib/unread/base.rb +2 -2
- data/lib/unread/readable_scopes.rb +8 -12
- data/lib/unread/reader_scopes.rb +1 -1
- data/lib/unread/version.rb +1 -1
- data/spec/database.yml +8 -0
- data/spec/readable_spec.rb +5 -0
- data/spec/spec_helper.rb +8 -2
- data/unread.gemspec +4 -1
- metadata +23 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05f0404c7e8d4778e3c417c8ea555ea8281770ec
|
4
|
+
data.tar.gz: d528c0105fe90d6e8e354a6828e6edf0fb5d0349
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d378c5dec0dde8062d584f012b50552af831d6aac3917e7e9df201a1806b0012a35fd878279ae4bfdbe83ee45b2bda760d2eaa56b798ba061f7b380e3c4aed3a
|
7
|
+
data.tar.gz: 8f3b85a26665a94e989351320c9ae6ba9b724e035170d6007333e06ae722515417e5685f9ceab0e0718f8c441fb902771ac745f72f404059a9ed0e3d07509cc9
|
data/.travis.yml
CHANGED
data/ci/Gemfile-rails-3-0
CHANGED
data/ci/Gemfile-rails-3-1
CHANGED
data/ci/Gemfile-rails-3-2
CHANGED
data/ci/Gemfile-rails-4-0
CHANGED
data/ci/Gemfile-rails-4-1
CHANGED
data/ci/Gemfile-rails-4-2
CHANGED
data/lib/unread/base.rb
CHANGED
@@ -5,7 +5,7 @@ module Unread
|
|
5
5
|
|
6
6
|
module Base
|
7
7
|
def acts_as_reader(options={})
|
8
|
-
ReadMark.belongs_to :user, :class_name => self.to_s
|
8
|
+
ReadMark.belongs_to :user, :class_name => self.to_s, inverse_of: :read_marks
|
9
9
|
|
10
10
|
has_many :read_marks, :dependent => :delete_all, :foreign_key => 'user_id', :inverse_of => :user
|
11
11
|
|
@@ -32,7 +32,7 @@ module Unread
|
|
32
32
|
options.reverse_merge!(:on => :updated_at)
|
33
33
|
self.readable_options = options
|
34
34
|
|
35
|
-
has_many :read_marks, :as => :readable, :dependent => :delete_all
|
35
|
+
has_many :read_marks, :as => :readable, :dependent => :delete_all, inverse_of: :readable
|
36
36
|
|
37
37
|
ReadMark.readable_classes ||= []
|
38
38
|
ReadMark.readable_classes << self unless ReadMark.readable_classes.include?(self)
|
@@ -7,7 +7,7 @@ module Unread
|
|
7
7
|
joins "LEFT JOIN read_marks
|
8
8
|
ON read_marks.readable_type = '#{base_class.name}'
|
9
9
|
AND read_marks.readable_id = #{quoted_table_name}.#{quoted_primary_key}
|
10
|
-
AND read_marks.user_id = #{user.id}
|
10
|
+
AND read_marks.user_id = #{quote_bound_value(user.id)}
|
11
11
|
AND read_marks.timestamp >= #{quoted_table_name}.#{connection.quote_column_name(readable_options[:on])}"
|
12
12
|
end
|
13
13
|
|
@@ -15,32 +15,28 @@ module Unread
|
|
15
15
|
result = join_read_marks(user)
|
16
16
|
|
17
17
|
if global_time_stamp = user.read_mark_global(self).try(:timestamp)
|
18
|
-
result
|
19
|
-
|
18
|
+
result.where("read_marks.id IS NULL
|
19
|
+
AND #{quoted_table_name}.#{connection.quote_column_name(readable_options[:on])} > ?", global_time_stamp)
|
20
20
|
else
|
21
|
-
result
|
21
|
+
result.where('read_marks.id IS NULL')
|
22
22
|
end
|
23
|
-
|
24
|
-
result
|
25
23
|
end
|
26
24
|
|
27
25
|
def read_by(user)
|
28
26
|
result = join_read_marks(user)
|
29
27
|
|
30
28
|
if global_time_stamp = user.read_mark_global(self).try(:timestamp)
|
31
|
-
result
|
32
|
-
|
29
|
+
result.where("read_marks.id IS NOT NULL
|
30
|
+
OR #{quoted_table_name}.#{connection.quote_column_name(readable_options[:on])} <= ?", global_time_stamp)
|
33
31
|
else
|
34
|
-
result
|
32
|
+
result.where('read_marks.id IS NOT NULL')
|
35
33
|
end
|
36
|
-
|
37
|
-
result
|
38
34
|
end
|
39
35
|
|
40
36
|
def with_read_marks_for(user)
|
41
37
|
join_read_marks(user).select("#{quoted_table_name}.*,
|
42
38
|
read_marks.id AS read_mark_id,
|
43
|
-
#{user.id} AS read_mark_user_id")
|
39
|
+
#{quote_bound_value(user.id)} AS read_mark_user_id")
|
44
40
|
end
|
45
41
|
end
|
46
42
|
end
|
data/lib/unread/reader_scopes.rb
CHANGED
data/lib/unread/version.rb
CHANGED
data/spec/database.yml
ADDED
data/spec/readable_spec.rb
CHANGED
@@ -25,6 +25,11 @@ describe Unread::Readable do
|
|
25
25
|
expect(Email.unread_by(@other_reader)).to eq [@email1, @email2]
|
26
26
|
end
|
27
27
|
|
28
|
+
it "should return empty array directly after marking all as read" do
|
29
|
+
Email.mark_as_read! :all, :for => @reader
|
30
|
+
expect(Email.unread_by(@reader)).to eq([])
|
31
|
+
end
|
32
|
+
|
28
33
|
it "should not allow invalid parameter" do
|
29
34
|
[ 42, nil, 'foo', :foo, {} ].each do |not_a_reader|
|
30
35
|
expect {
|
data/spec/spec_helper.rb
CHANGED
@@ -51,9 +51,15 @@ if I18n.respond_to?(:enforce_available_locales=)
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def setup_db
|
54
|
-
|
54
|
+
configs = YAML.load_file('spec/database.yml')
|
55
|
+
ActiveRecord::Base.configurations = configs
|
55
56
|
|
56
|
-
|
57
|
+
db_name = ENV['DB'] || 'sqlite'
|
58
|
+
|
59
|
+
puts "Testing with ActiveRecord #{ActiveRecord::VERSION::STRING} on #{db_name}"
|
60
|
+
|
61
|
+
ActiveRecord::Base.establish_connection(db_name.to_sym)
|
62
|
+
ActiveRecord::Base.default_timezone = :utc
|
57
63
|
ActiveRecord::Migration.verbose = false
|
58
64
|
|
59
65
|
require File.expand_path('../../lib/generators/unread/migration/templates/migration.rb', __FILE__)
|
data/unread.gemspec
CHANGED
@@ -5,11 +5,13 @@ require "unread/version"
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "unread"
|
7
7
|
s.version = Unread::VERSION
|
8
|
+
s.licenses = ['MIT']
|
8
9
|
s.authors = ["Georg Ledermann"]
|
9
10
|
s.email = ["mail@georg-ledermann.de"]
|
10
|
-
s.homepage = ""
|
11
|
+
s.homepage = "https://github.com/ledermann/unread"
|
11
12
|
s.summary = %q{Manages read/unread status of ActiveRecord objects}
|
12
13
|
s.description = %q{This gem creates a scope for unread objects and adds methods to mark objects as read }
|
14
|
+
s.required_ruby_version = '>= 1.9.3'
|
13
15
|
|
14
16
|
s.rubyforge_project = "unread"
|
15
17
|
|
@@ -23,6 +25,7 @@ Gem::Specification.new do |s|
|
|
23
25
|
s.add_development_dependency 'rake'
|
24
26
|
s.add_development_dependency 'timecop'
|
25
27
|
s.add_development_dependency 'sqlite3'
|
28
|
+
s.add_development_dependency 'mysql2'
|
26
29
|
s.add_development_dependency 'rspec'
|
27
30
|
s.add_development_dependency 'simplecov'
|
28
31
|
s.add_development_dependency 'coveralls', '>= 0.8.0'
|
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.6.
|
4
|
+
version: 0.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Georg Ledermann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: mysql2
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rspec
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -139,6 +153,7 @@ files:
|
|
139
153
|
- lib/unread/reader_scopes.rb
|
140
154
|
- lib/unread/version.rb
|
141
155
|
- spec/base_spec.rb
|
156
|
+
- spec/database.yml
|
142
157
|
- spec/model/email.rb
|
143
158
|
- spec/model/reader.rb
|
144
159
|
- spec/read_mark_spec.rb
|
@@ -149,8 +164,9 @@ files:
|
|
149
164
|
- spec/support/query_counter.rb
|
150
165
|
- spec/support/timecop.rb
|
151
166
|
- unread.gemspec
|
152
|
-
homepage:
|
153
|
-
licenses:
|
167
|
+
homepage: https://github.com/ledermann/unread
|
168
|
+
licenses:
|
169
|
+
- MIT
|
154
170
|
metadata: {}
|
155
171
|
post_install_message:
|
156
172
|
rdoc_options: []
|
@@ -160,7 +176,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
160
176
|
requirements:
|
161
177
|
- - ">="
|
162
178
|
- !ruby/object:Gem::Version
|
163
|
-
version:
|
179
|
+
version: 1.9.3
|
164
180
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
181
|
requirements:
|
166
182
|
- - ">="
|
@@ -168,12 +184,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
184
|
version: '0'
|
169
185
|
requirements: []
|
170
186
|
rubyforge_project: unread
|
171
|
-
rubygems_version: 2.4.
|
187
|
+
rubygems_version: 2.4.8
|
172
188
|
signing_key:
|
173
189
|
specification_version: 4
|
174
190
|
summary: Manages read/unread status of ActiveRecord objects
|
175
191
|
test_files:
|
176
192
|
- spec/base_spec.rb
|
193
|
+
- spec/database.yml
|
177
194
|
- spec/model/email.rb
|
178
195
|
- spec/model/reader.rb
|
179
196
|
- spec/read_mark_spec.rb
|