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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 53a42da5488ffcea3d23b132c53990764b553e2a
4
- data.tar.gz: 2607df858f571372633543023a521f1ade575213
3
+ metadata.gz: 333110ae2b5762b2409d9b7678233d62441366c4
4
+ data.tar.gz: 4edf90782edebe0692832c8c21b99f0306e709ee
5
5
  SHA512:
6
- metadata.gz: 4cb8b5b2b87c13ab992e561934c043bac57decc8deba0d2d67a174692b1bc6bbca5af47164010ce5ef6424c9295741cc56c27b61ef1d16b019440c9385d27e1c
7
- data.tar.gz: 7f0a04d378ede51f0c25e96186c80c0860caae6add05a4d05c2ed5de5742200ac339ba98abd4b82a36301b6ddac32184578c9e6039e467bcb09c5e7991a56d0a
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
@@ -1,3 +1,5 @@
1
1
  - cache
2
- - dependencies
3
- - callbacks
2
+ - dependencies *
3
+ - callbacks *
4
+
5
+ - test: refactoring
@@ -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
@@ -1,3 +1,3 @@
1
1
  module HasNotifications
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  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.1
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-09 00:00:00.000000000 Z
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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
@@ -1,2 +0,0 @@
1
- --format documentation
2
- --color