has_notifications 0.0.1 → 0.0.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/README.md +12 -0
- data/TODO.txt +4 -2
- data/has_notifications.gemspec +3 -3
- data/lib/has_notifications/has_notifications.rb +28 -0
- data/lib/has_notifications/version.rb +1 -1
- metadata +14 -15
- data/.rspec +0 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 333110ae2b5762b2409d9b7678233d62441366c4
|
|
4
|
+
data.tar.gz: 4edf90782edebe0692832c8c21b99f0306e709ee
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9b20620b7e175e6eb5bdef2dbc35e09fd18546e778a30703e24c579d07d88d0f4295db2561d4925210946683549a44b9f0d9542912035936e0171d543ad404a1
|
|
7
|
+
data.tar.gz: 0eb50018bd604caa6636c3f47e970c0ed5cb17d8dab7b0a6a3b8c1d06b993686928d7fc8e83381a575f2f72b723eb0384c92bff8a9840edd16813f9e441bff5b
|
data/README.md
CHANGED
|
@@ -66,6 +66,18 @@ notification = vlad.unwatched_notifications[0]
|
|
|
66
66
|
notification.mark_as_watched
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
+
Callbacks(blocks and lambdas aren't supported):
|
|
70
|
+
```ruby
|
|
71
|
+
class User < ActiveRecord::Base
|
|
72
|
+
has_notifications
|
|
73
|
+
on_notification :callback
|
|
74
|
+
|
|
75
|
+
def callback notification
|
|
76
|
+
# fancy code...
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
```
|
|
80
|
+
|
|
69
81
|
## Contributing
|
|
70
82
|
|
|
71
83
|
0. Take a look at TODO.txt
|
data/TODO.txt
CHANGED
data/has_notifications.gemspec
CHANGED
|
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
|
20
20
|
spec.require_paths = ["lib"]
|
|
21
21
|
|
|
22
22
|
spec.add_development_dependency "bundler"
|
|
23
|
-
spec.add_development_dependency "rspec"
|
|
24
|
-
spec.add_development_dependency "rake"
|
|
25
|
-
spec.add_development_dependency "sqlite3"
|
|
23
|
+
spec.add_development_dependency "rspec", "~> 3.2.0"
|
|
24
|
+
spec.add_development_dependency "rake", "~> 10.4.2"
|
|
25
|
+
spec.add_development_dependency "sqlite3", "~> 1.3.10"
|
|
26
26
|
end
|
|
@@ -4,6 +4,10 @@ require 'has_notifications/hn_notification'
|
|
|
4
4
|
module HasNotifications
|
|
5
5
|
module HasNotifications
|
|
6
6
|
def has_notifications
|
|
7
|
+
# storage for callback
|
|
8
|
+
self.class_variable_set :@@notification_callbacks, Array.new
|
|
9
|
+
|
|
10
|
+
# associations
|
|
7
11
|
has_many :notifications, class_name: "::HasNotifications::HnNotification", as: :destination, dependent: :destroy
|
|
8
12
|
|
|
9
13
|
# create instance methods
|
|
@@ -16,6 +20,9 @@ module HasNotifications
|
|
|
16
20
|
hn_notification.destination = self
|
|
17
21
|
hn_notification.notification = notification
|
|
18
22
|
hn_notification.save
|
|
23
|
+
|
|
24
|
+
# callbacks....
|
|
25
|
+
self.run_notification_callbacks(hn_notification)
|
|
19
26
|
end
|
|
20
27
|
|
|
21
28
|
def all_notifications
|
|
@@ -38,6 +45,27 @@ module HasNotifications
|
|
|
38
45
|
#
|
|
39
46
|
self.notifications.where(watched: true)
|
|
40
47
|
end
|
|
48
|
+
|
|
49
|
+
protected
|
|
50
|
+
def run_notification_callbacks(notification)
|
|
51
|
+
# get callback list
|
|
52
|
+
callbacks = self.class.class_variable_get(:@@notification_callbacks)
|
|
53
|
+
|
|
54
|
+
callbacks.each do |callback|
|
|
55
|
+
self.send(callback, notification)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def on_notification(*methods)
|
|
62
|
+
#
|
|
63
|
+
# Add callback
|
|
64
|
+
#
|
|
65
|
+
notification_callbacks = self.class_variable_get(:@@notification_callbacks)
|
|
66
|
+
|
|
67
|
+
methods.each do |method|
|
|
68
|
+
notification_callbacks << method
|
|
41
69
|
end
|
|
42
70
|
end
|
|
43
71
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: has_notifications
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vlad Zagorodniy
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-05-
|
|
11
|
+
date: 2015-05-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -28,44 +28,44 @@ dependencies:
|
|
|
28
28
|
name: rspec
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- - "
|
|
31
|
+
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
33
|
+
version: 3.2.0
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- - "
|
|
38
|
+
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
40
|
+
version: 3.2.0
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: rake
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - "
|
|
45
|
+
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version:
|
|
47
|
+
version: 10.4.2
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- - "
|
|
52
|
+
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version:
|
|
54
|
+
version: 10.4.2
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: sqlite3
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- - "
|
|
59
|
+
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
61
|
+
version: 1.3.10
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- - "
|
|
66
|
+
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version:
|
|
68
|
+
version: 1.3.10
|
|
69
69
|
description: Simple notifications for Ruby on Rails.
|
|
70
70
|
email:
|
|
71
71
|
- vladzzag@gmail.com
|
|
@@ -74,7 +74,6 @@ extensions: []
|
|
|
74
74
|
extra_rdoc_files: []
|
|
75
75
|
files:
|
|
76
76
|
- ".gitignore"
|
|
77
|
-
- ".rspec"
|
|
78
77
|
- ".travis.yml"
|
|
79
78
|
- CODE_OF_CONDUCT.md
|
|
80
79
|
- Gemfile
|
data/.rspec
DELETED