partisan 0.3 → 0.4
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 +7 -0
- data/README.md +1 -1
- data/lib/generators/partisan/install_generator.rb +4 -0
- data/lib/generators/partisan/templates/model.rb +3 -0
- data/lib/partisan.rb +4 -0
- data/lib/partisan/follow.rb +27 -23
- data/lib/partisan/followable.rb +1 -1
- data/lib/partisan/follower.rb +4 -4
- data/lib/partisan/version.rb +1 -1
- data/spec/partisan/follower_spec.rb +3 -3
- data/spec/spec_helper.rb +4 -0
- metadata +16 -33
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5144131fd00599fe346d266846c160768aa821e2
|
4
|
+
data.tar.gz: ab4d801d4cf2e632474efa1d8a1117d1b66b7a19
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e416ac5b694502c5d7f84442079987f5b3561a7b6cfe90c36f78517b6f9d791a16c78f20b9069d35d5e2874b425c4e5c236a9e2257c4e74fbfba8fa30f41791d
|
7
|
+
data.tar.gz: e5fbe276053c550f4ecadb39df3c8933eade895eb435ee0d3558504da5592d1eb71d7fef076446aed41b56aa7a913c4bbe190393c3ab0fba644fffa4f3ca3eee
|
data/README.md
CHANGED
data/lib/partisan.rb
CHANGED
data/lib/partisan/follow.rb
CHANGED
@@ -1,23 +1,6 @@
|
|
1
1
|
module Partisan
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
# Validations
|
6
|
-
validates :followable, presence: true
|
7
|
-
validates :follower, presence: true
|
8
|
-
|
9
|
-
# Associations
|
10
|
-
belongs_to :followable, polymorphic: true
|
11
|
-
belongs_to :follower, polymorphic: true
|
12
|
-
|
13
|
-
# Callbacks
|
14
|
-
after_create :update_follow_counter
|
15
|
-
after_destroy :update_follow_counter
|
16
|
-
|
17
|
-
around_create :around_create_follower
|
18
|
-
around_create :around_create_followable
|
19
|
-
around_destroy :around_destroy_follower
|
20
|
-
around_destroy :around_destroy_followable
|
2
|
+
module Follow
|
3
|
+
extend ActiveSupport::Concern
|
21
4
|
|
22
5
|
# Constants
|
23
6
|
FOLLOWER_FOLLOW_ACCESSORS = [:about_to_follow, :just_followed]
|
@@ -25,6 +8,25 @@ module Partisan
|
|
25
8
|
FOLLOWABLE_BEING_FOLLOWED_ACCESSORS = [:about_to_be_followed_by, :just_followed_by]
|
26
9
|
FOLLOWABLE_BEING_UNFOLLOWED_ACCESSORS = [:about_to_be_unfollowed_by, :just_unfollowed_by]
|
27
10
|
|
11
|
+
included do
|
12
|
+
# Validations
|
13
|
+
validates :followable, presence: true
|
14
|
+
validates :follower, presence: true
|
15
|
+
|
16
|
+
# Associations
|
17
|
+
belongs_to :followable, polymorphic: true
|
18
|
+
belongs_to :follower, polymorphic: true
|
19
|
+
|
20
|
+
# Callbacks
|
21
|
+
after_create :update_follow_counter
|
22
|
+
after_destroy :update_follow_counter
|
23
|
+
|
24
|
+
around_create :around_create_follower
|
25
|
+
around_create :around_create_followable
|
26
|
+
around_destroy :around_destroy_follower
|
27
|
+
around_destroy :around_destroy_followable
|
28
|
+
end
|
29
|
+
|
28
30
|
protected
|
29
31
|
|
30
32
|
def update_follow_counter
|
@@ -48,10 +50,6 @@ module Partisan
|
|
48
50
|
execute_callback :followable, :being_unfollowed, &blk
|
49
51
|
end
|
50
52
|
|
51
|
-
def self.accessors_for_follow_callback(association, callback)
|
52
|
-
const_get "#{association}_#{callback}_accessors".upcase
|
53
|
-
end
|
54
|
-
|
55
53
|
private
|
56
54
|
|
57
55
|
def execute_callback(association, callback, &blk)
|
@@ -71,5 +69,11 @@ module Partisan
|
|
71
69
|
|
72
70
|
true
|
73
71
|
end
|
72
|
+
|
73
|
+
module ClassMethods
|
74
|
+
def accessors_for_follow_callback(association, callback)
|
75
|
+
const_get "#{association}_#{callback}_accessors".upcase
|
76
|
+
end
|
77
|
+
end
|
74
78
|
end
|
75
79
|
end
|
data/lib/partisan/followable.rb
CHANGED
@@ -6,7 +6,7 @@ module Partisan
|
|
6
6
|
include Partisan::FollowHelper
|
7
7
|
|
8
8
|
included do
|
9
|
-
has_many :followings, as: :followable, class_name: '
|
9
|
+
has_many :followings, as: :followable, class_name: 'Follow', dependent: :destroy
|
10
10
|
define_model_callbacks :being_followed
|
11
11
|
define_model_callbacks :being_unfollowed
|
12
12
|
attr_accessor :about_to_be_followed_by, :just_followed_by, :about_to_be_unfollowed_by, :just_unfollowed_by
|
data/lib/partisan/follower.rb
CHANGED
@@ -5,7 +5,7 @@ module Partisan
|
|
5
5
|
include Partisan::FollowHelper
|
6
6
|
|
7
7
|
included do
|
8
|
-
has_many :follows, as: :follower, class_name: '
|
8
|
+
has_many :follows, as: :follower, class_name: 'Follow', dependent: :destroy
|
9
9
|
define_model_callbacks :follow
|
10
10
|
define_model_callbacks :unfollow
|
11
11
|
attr_accessor :about_to_follow, :just_followed, :about_to_unfollow, :just_unfollowed
|
@@ -17,7 +17,7 @@ module Partisan
|
|
17
17
|
#
|
18
18
|
# @user.follow(@team)
|
19
19
|
#
|
20
|
-
# @return (
|
20
|
+
# @return (Follow)
|
21
21
|
def follow(resource)
|
22
22
|
return if self == resource
|
23
23
|
|
@@ -32,7 +32,7 @@ module Partisan
|
|
32
32
|
#
|
33
33
|
# @user.unfollow(@team)
|
34
34
|
#
|
35
|
-
# @return (
|
35
|
+
# @return (Follow) || nil
|
36
36
|
def unfollow(resource)
|
37
37
|
return if self == resource
|
38
38
|
|
@@ -61,7 +61,7 @@ module Partisan
|
|
61
61
|
#
|
62
62
|
# @user.fetch_follows(@team)
|
63
63
|
#
|
64
|
-
# @return [
|
64
|
+
# @return [Follow, ...]
|
65
65
|
def fetch_follows(resource)
|
66
66
|
follows.where followable_id: resource.id, followable_type: parent_class_name(resource)
|
67
67
|
end
|
data/lib/partisan/version.rb
CHANGED
@@ -41,12 +41,12 @@ describe Partisan::Follower do
|
|
41
41
|
end
|
42
42
|
|
43
43
|
describe :follow do
|
44
|
-
it { expect(
|
45
|
-
it { expect(
|
44
|
+
it { expect(Follow.last.follower_id).to eq user.id }
|
45
|
+
it { expect(Follow.last.followable_id).to eq band.id }
|
46
46
|
end
|
47
47
|
|
48
48
|
describe :unfollow do
|
49
|
-
it { expect{user.unfollow band}.to change{
|
49
|
+
it { expect{user.unfollow band}.to change{Follow.last}.to(nil) }
|
50
50
|
end
|
51
51
|
|
52
52
|
describe :follows? do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: partisan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
5
|
-
prerelease:
|
4
|
+
version: '0.4'
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Simon Prévost
|
@@ -10,28 +9,25 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date: 2013-
|
12
|
+
date: 2013-09-16 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: activerecord
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
|
-
- -
|
18
|
+
- - '>='
|
21
19
|
- !ruby/object:Gem::Version
|
22
20
|
version: 3.0.0
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
|
-
- -
|
25
|
+
- - '>='
|
29
26
|
- !ruby/object:Gem::Version
|
30
27
|
version: 3.0.0
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
29
|
name: bundler
|
33
30
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
31
|
requirements:
|
36
32
|
- - ~>
|
37
33
|
- !ruby/object:Gem::Version
|
@@ -39,7 +35,6 @@ dependencies:
|
|
39
35
|
type: :development
|
40
36
|
prerelease: false
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
39
|
- - ~>
|
45
40
|
- !ruby/object:Gem::Version
|
@@ -47,49 +42,43 @@ dependencies:
|
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
43
|
name: rake
|
49
44
|
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
45
|
requirements:
|
52
|
-
- -
|
46
|
+
- - '>='
|
53
47
|
- !ruby/object:Gem::Version
|
54
48
|
version: '0'
|
55
49
|
type: :development
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
52
|
requirements:
|
60
|
-
- -
|
53
|
+
- - '>='
|
61
54
|
- !ruby/object:Gem::Version
|
62
55
|
version: '0'
|
63
56
|
- !ruby/object:Gem::Dependency
|
64
57
|
name: rspec
|
65
58
|
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
59
|
requirements:
|
68
|
-
- -
|
60
|
+
- - '>='
|
69
61
|
- !ruby/object:Gem::Version
|
70
62
|
version: '0'
|
71
63
|
type: :development
|
72
64
|
prerelease: false
|
73
65
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
66
|
requirements:
|
76
|
-
- -
|
67
|
+
- - '>='
|
77
68
|
- !ruby/object:Gem::Version
|
78
69
|
version: '0'
|
79
70
|
- !ruby/object:Gem::Dependency
|
80
71
|
name: sqlite3
|
81
72
|
requirement: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
73
|
requirements:
|
84
|
-
- -
|
74
|
+
- - '>='
|
85
75
|
- !ruby/object:Gem::Version
|
86
76
|
version: '0'
|
87
77
|
type: :development
|
88
78
|
prerelease: false
|
89
79
|
version_requirements: !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
80
|
requirements:
|
92
|
-
- -
|
81
|
+
- - '>='
|
93
82
|
- !ruby/object:Gem::Version
|
94
83
|
version: '0'
|
95
84
|
description: Partisan is a Ruby library that allows ActiveRecord records to be follower
|
@@ -114,6 +103,7 @@ files:
|
|
114
103
|
- lib/generators/partisan/USAGE
|
115
104
|
- lib/generators/partisan/install_generator.rb
|
116
105
|
- lib/generators/partisan/templates/migration.rb
|
106
|
+
- lib/generators/partisan/templates/model.rb
|
117
107
|
- lib/partisan.rb
|
118
108
|
- lib/partisan/follow.rb
|
119
109
|
- lib/partisan/follow_helper.rb
|
@@ -130,33 +120,26 @@ files:
|
|
130
120
|
homepage: https://github.com/mirego/partisan
|
131
121
|
licenses:
|
132
122
|
- BSD 3-Clause
|
123
|
+
metadata: {}
|
133
124
|
post_install_message:
|
134
125
|
rdoc_options: []
|
135
126
|
require_paths:
|
136
127
|
- lib
|
137
128
|
required_ruby_version: !ruby/object:Gem::Requirement
|
138
|
-
none: false
|
139
129
|
requirements:
|
140
|
-
- -
|
130
|
+
- - '>='
|
141
131
|
- !ruby/object:Gem::Version
|
142
132
|
version: '0'
|
143
|
-
segments:
|
144
|
-
- 0
|
145
|
-
hash: 83070319270688629
|
146
133
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
|
-
none: false
|
148
134
|
requirements:
|
149
|
-
- -
|
135
|
+
- - '>='
|
150
136
|
- !ruby/object:Gem::Version
|
151
137
|
version: '0'
|
152
|
-
segments:
|
153
|
-
- 0
|
154
|
-
hash: 83070319270688629
|
155
138
|
requirements: []
|
156
139
|
rubyforge_project:
|
157
|
-
rubygems_version: 1.
|
140
|
+
rubygems_version: 2.1.0
|
158
141
|
signing_key:
|
159
|
-
specification_version:
|
142
|
+
specification_version: 4
|
160
143
|
summary: Partisan is a Ruby library that allows ActiveRecord records to be follower
|
161
144
|
and followable
|
162
145
|
test_files:
|