mongoid_follow 0.2.0 → 0.2.1

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