has_notifications 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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