mongoid_follow 0.2.0 → 0.2.1

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.
data/README.rdoc CHANGED
@@ -48,6 +48,33 @@ You can also be a follower of other models
48
48
  @gang.follower?(@bonnie)
49
49
  @bonnie.follows?(@gang)
50
50
 
51
+ == Callbacks
52
+
53
+ You can attach callbacks to the follower/followee models before or after the follow.
54
+
55
+ # Follower model
56
+ def before_follow(followee)
57
+ puts 'Notify me'
58
+ end
59
+
60
+ # Other follower callbacks
61
+ after_follow
62
+ before_unfollow
63
+ after_unfollow
64
+
65
+
66
+ # Followee model
67
+ def before_followed_by(follower)
68
+ puts 'Something here'
69
+ end
70
+
71
+ # Other followee callbacks
72
+ after_followed_by
73
+ before_unfollowed_by
74
+ after_unfollowed_by
75
+
76
+ * Note: careful with using callbacks, we have no transaction so if breaks on your callbacks, what gets saved is saved.
77
+
51
78
  * Any bug or issue, please send me an email to aeguintu@gmail.com
52
79
 
53
80
  == For development
@@ -14,15 +14,15 @@ module Mongoid
14
14
  def follow(model)
15
15
  if self.id != model.id && !self.follows?(model)
16
16
 
17
- model.before_followed if model.respond_to?('before_followed')
17
+ model.before_followed_by(self) if model.respond_to?('before_followed_by')
18
18
  model.followers.create!(:ff_type => self.class.name, :ff_id => self.id)
19
19
  model.inc(:fferc, 1)
20
- model.after_followed if model.respond_to?('after_followed')
20
+ model.after_followed_by(self) if model.respond_to?('after_followed_by')
21
21
 
22
- self.before_follow if self.respond_to?('before_follow')
22
+ self.before_follow(model) if self.respond_to?('before_follow')
23
23
  self.followees.create!(:ff_type => model.class.name, :ff_id => model.id)
24
24
  self.inc(:ffeec, 1)
25
- self.after_follow if self.respond_to?('after_follow')
25
+ self.after_follow(model) if self.respond_to?('after_follow')
26
26
 
27
27
  else
28
28
  return false
@@ -36,15 +36,15 @@ module Mongoid
36
36
  def unfollow(model)
37
37
  if self.id != model.id && self.follows?(model)
38
38
 
39
- model.before_unfollowed if model.respond_to?('before_unfollowed')
39
+ model.before_unfollowed_by(self) if model.respond_to?('before_unfollowed_by')
40
40
  model.followers.where(:ff_type => self.class.name, :ff_id => self.id).destroy
41
41
  model.inc(:fferc, -1)
42
- model.after_unfollowed if model.respond_to?('after_unfollowed')
42
+ model.after_unfollowed_by(self) if model.respond_to?('after_unfollowed_by')
43
43
 
44
- self.before_unfollow if self.respond_to?('before_unfollow')
44
+ self.before_unfollow(model) if self.respond_to?('before_unfollow')
45
45
  self.followees.where(:ff_type => model.class.name, :ff_id => model.id).destroy
46
46
  self.inc(:ffeec, -1)
47
- self.after_unfollow if self.respond_to?('after_unfollow')
47
+ self.after_unfollow(model) if self.respond_to?('after_unfollow')
48
48
 
49
49
  else
50
50
  return false
@@ -1,3 +1,3 @@
1
1
  module MongoidFollow
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
data/spec/models/group.rb CHANGED
@@ -4,11 +4,11 @@ class Group
4
4
 
5
5
  field :name
6
6
 
7
- def before_followed
7
+ def before_followed_by(follower)
8
8
  # before followee is followed
9
9
  end
10
10
 
11
- def before_unfollowed
11
+ def before_unfollowed_by(follower)
12
12
  # before followee is unfollowed
13
13
  end
14
14
  end
data/spec/models/user.rb CHANGED
@@ -5,11 +5,15 @@ class User
5
5
 
6
6
  field :name
7
7
 
8
- def after_follow
8
+ def after_follow(followee)
9
9
  # after follower follows
10
10
  end
11
11
 
12
- def after_unfollowed
12
+ def after_followed_by(follower)
13
+ # after followee is followed
14
+ end
15
+
16
+ def after_unfollowed_by(followee)
13
17
  # after follower unfollows
14
18
  end
15
19
  end
@@ -126,13 +126,14 @@ describe Mongoid::Follower do
126
126
  @bonnie.common_followees_with(@alec).should == [@gang, @clyde]
127
127
  end
128
128
 
129
+ # Duh... this is a useless spec... Hrmn...
129
130
  it "should respond on callbacks" do
130
131
  @bonnie.respond_to?('after_follow').should be_true
131
- @bonnie.respond_to?('after_unfollowed').should be_true
132
+ @bonnie.respond_to?('after_unfollowed_by').should be_true
132
133
  @bonnie.respond_to?('before_follow').should be_false
133
134
 
134
- @gang.respond_to?('before_followed').should be_true
135
- @gang.respond_to?('after_followed').should be_false
135
+ @gang.respond_to?('before_followed_by').should be_true
136
+ @gang.respond_to?('after_followed_by').should be_false
136
137
  end
137
138
  end
138
139
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: mongoid_follow
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.0
5
+ version: 0.2.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Alec Guintu
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-11-16 00:00:00 +08:00
13
+ date: 2011-11-17 00:00:00 +08:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency