socialization 0.2.2 → 0.3.0
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/.travis.yml +8 -0
- data/Appraisals +4 -4
- data/README.rdoc +68 -8
- data/demo/demo_app/Gemfile +2 -2
- data/demo/demo_app/app/models/comment.rb +5 -0
- data/demo/demo_app/app/models/mention.rb +3 -0
- data/demo/demo_app/app/models/user.rb +1 -0
- data/demo/demo_app/db/migrate/20120221200644_create_mentions.rb +14 -0
- data/demo/demo_app/db/migrate/20120221202703_create_comments.rb +9 -0
- data/demo/demo_app/db/schema.rb +18 -1
- data/demo/demo_app/db/seeds.rb +3 -0
- data/gemfiles/activerecord30.gemfile +6 -0
- data/gemfiles/activerecord30.gemfile.lock +23 -0
- data/gemfiles/activerecord31.gemfile +6 -0
- data/gemfiles/activerecord31.gemfile.lock +25 -0
- data/gemfiles/activerecord32.gemfile +6 -0
- data/gemfiles/activerecord32.gemfile.lock +25 -0
- data/generators/socialization/USAGE +1 -1
- data/generators/socialization/socialization_generator.rb +8 -4
- data/generators/socialization/templates/migration_mentions.rb +14 -0
- data/generators/socialization/templates/model_mention.rb +3 -0
- data/lib/generators/socialization/socialization_generator.rb +8 -4
- data/lib/socialization/follow_store.rb +8 -8
- data/lib/socialization/followable.rb +26 -15
- data/lib/socialization/follower.rb +32 -21
- data/lib/socialization/hello.rb +21 -5
- data/lib/socialization/like_store.rb +8 -8
- data/lib/socialization/likeable.rb +26 -15
- data/lib/socialization/liker.rb +36 -21
- data/lib/socialization/mention_store.rb +14 -0
- data/lib/socialization/mentionable.rb +36 -0
- data/lib/socialization/mentionner.rb +47 -0
- data/lib/socialization/version.rb +1 -1
- data/test/follow_test.rb +36 -6
- data/test/like_test.rb +36 -6
- data/test/mention_test.rb +107 -0
- data/test/test_helper.rb +61 -0
- data/test/world_test.rb +34 -24
- metadata +33 -16
data/test/like_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.dirname(__FILE__)+'/test_helper'
|
1
|
+
require File.expand_path(File.dirname(__FILE__))+'/test_helper'
|
2
2
|
|
3
3
|
class LikeTest < Test::Unit::TestCase
|
4
4
|
context "a Liker" do
|
@@ -6,8 +6,7 @@ class LikeTest < Test::Unit::TestCase
|
|
6
6
|
seed
|
7
7
|
end
|
8
8
|
|
9
|
-
should "
|
10
|
-
assert_equal true, @liker1.respond_to?(:is_liker?)
|
9
|
+
should "be liker" do
|
11
10
|
assert_equal true, @liker1.is_liker?
|
12
11
|
end
|
13
12
|
|
@@ -22,6 +21,20 @@ class LikeTest < Test::Unit::TestCase
|
|
22
21
|
assert @liker1.unlike!(@likeable1)
|
23
22
|
assert_equal false, @liker1.likes?(@likeable1)
|
24
23
|
end
|
24
|
+
|
25
|
+
should "not be able to like the same thing twice" do
|
26
|
+
assert @liker1.like!(@likeable1)
|
27
|
+
|
28
|
+
assert_raise ActiveRecord::RecordInvalid do
|
29
|
+
@liker1.like!(@likeable1)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
should "not be able to unlike something that is not liked" do
|
34
|
+
assert_raise ActiveRecord::RecordNotFound do
|
35
|
+
@liker1.unlike!(@likeable1)
|
36
|
+
end
|
37
|
+
end
|
25
38
|
end
|
26
39
|
|
27
40
|
context "a Likeable" do
|
@@ -29,8 +42,7 @@ class LikeTest < Test::Unit::TestCase
|
|
29
42
|
seed
|
30
43
|
end
|
31
44
|
|
32
|
-
should "
|
33
|
-
assert_equal true, @likeable1.respond_to?(:is_likeable?)
|
45
|
+
should "be likeable" do
|
34
46
|
assert_equal true, @likeable1.is_likeable?
|
35
47
|
end
|
36
48
|
|
@@ -42,7 +54,11 @@ class LikeTest < Test::Unit::TestCase
|
|
42
54
|
|
43
55
|
should "expose a list of its likers" do
|
44
56
|
Like.create :liker => @liker1, :likeable => @likeable1
|
45
|
-
|
57
|
+
assert @likeable1.likers(ImALiker).is_a?(ActiveRecord::Relation)
|
58
|
+
assert_equal [@liker1], @likeable1.likers(ImALiker).all
|
59
|
+
|
60
|
+
assert_equal @likeable1.likers(ImALiker), @likeable1.likers(:im_a_likers)
|
61
|
+
assert_equal @likeable1.likers(ImALiker), @likeable1.likers("im_a_liker")
|
46
62
|
end
|
47
63
|
|
48
64
|
should "expose likings" do
|
@@ -77,6 +93,20 @@ class LikeTest < Test::Unit::TestCase
|
|
77
93
|
end
|
78
94
|
end
|
79
95
|
|
96
|
+
context "Virgin ActiveRecord::Base objects" do
|
97
|
+
setup do
|
98
|
+
@foo = Vanilla.new
|
99
|
+
end
|
100
|
+
|
101
|
+
should "not be liker" do
|
102
|
+
assert_equal false, @foo.is_liker?
|
103
|
+
end
|
104
|
+
|
105
|
+
should "not be likeable" do
|
106
|
+
assert_equal false, @foo.is_likeable?
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
80
110
|
def seed
|
81
111
|
@liker1 = ImALiker.create
|
82
112
|
@liker2 = ImALiker.create
|
@@ -0,0 +1,107 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__))+'/test_helper'
|
2
|
+
|
3
|
+
class MentionTest < Test::Unit::TestCase
|
4
|
+
context "a Mentionner" do
|
5
|
+
setup do
|
6
|
+
seed
|
7
|
+
end
|
8
|
+
|
9
|
+
should "be mentionner" do
|
10
|
+
assert_equal true, @mentionner1.is_mentionner?
|
11
|
+
end
|
12
|
+
|
13
|
+
should "be able to mention a Mentionable" do
|
14
|
+
assert @mentionner1.mention!(@mentionable1)
|
15
|
+
assert_equal true, @mentionner1.mentions?(@mentionable1)
|
16
|
+
assert_equal false, @mentionner2.mentions?(@mentionable1)
|
17
|
+
end
|
18
|
+
|
19
|
+
should "be able to unmention a Mentionable" do
|
20
|
+
Mention.create :mentionner => @mentionner1, :mentionable => @mentionable1
|
21
|
+
assert @mentionner1.unmention!(@mentionable1)
|
22
|
+
assert_equal false, @mentionner1.mentions?(@mentionable1)
|
23
|
+
end
|
24
|
+
|
25
|
+
should "not be able to mention the same thing twice" do
|
26
|
+
assert @mentionner1.mention!(@mentionable1)
|
27
|
+
|
28
|
+
assert_raise ActiveRecord::RecordInvalid do
|
29
|
+
@mentionner1.mention!(@mentionable1)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
should "not be able to unmention something that is not mentionned" do
|
34
|
+
assert_raise ActiveRecord::RecordNotFound do
|
35
|
+
@mentionner1.unmention!(@mentionable1)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
should "be able to mention itself" do
|
40
|
+
@mentionner_and_mentionable.mention!(@mentionner_and_mentionable)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context "a Mentionable" do
|
45
|
+
setup do
|
46
|
+
seed
|
47
|
+
end
|
48
|
+
|
49
|
+
should "be mentionable" do
|
50
|
+
assert_equal true, @mentionable1.is_mentionable?
|
51
|
+
end
|
52
|
+
|
53
|
+
should "be able to determine who mentions it" do
|
54
|
+
Mention.create :mentionner => @mentionner1, :mentionable => @mentionable1
|
55
|
+
assert_equal true, @mentionable1.mentioned_by?(@mentionner1)
|
56
|
+
assert_equal false, @mentionable1.mentioned_by?(@mentionner2)
|
57
|
+
end
|
58
|
+
|
59
|
+
should "expose a list of its mentionners" do
|
60
|
+
Mention.create :mentionner => @mentionner1, :mentionable => @mentionable1
|
61
|
+
assert @mentionable1.mentionners(ImAMentionner).is_a?(ActiveRecord::Relation)
|
62
|
+
assert_equal [@mentionner1], @mentionable1.mentionners(ImAMentionner).all
|
63
|
+
|
64
|
+
assert_equal @mentionable1.mentionners(ImAMentionner), @mentionable1.mentionners(:im_a_mentionners)
|
65
|
+
assert_equal @mentionable1.mentionners(ImAMentionner), @mentionable1.mentionners("im_a_mentionner")
|
66
|
+
end
|
67
|
+
|
68
|
+
should "expose mentionings" do
|
69
|
+
Mention.create :mentionner => @mentionner1, :mentionable => @mentionable1
|
70
|
+
mentionings = @mentionable1.mentionings
|
71
|
+
assert_equal 1, mentionings.size
|
72
|
+
assert mentionings.first.is_a?(Mention)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
context "Deleting a mentionner" do
|
77
|
+
setup do
|
78
|
+
seed
|
79
|
+
@mentionner1.mention!(@mentionable1)
|
80
|
+
end
|
81
|
+
|
82
|
+
should "delete its Mention records" do
|
83
|
+
@mentionner1.destroy
|
84
|
+
assert_equal false, @mentionable1.mentioned_by?(@mentionner1)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
context "Deleting a Mentionable" do
|
89
|
+
setup do
|
90
|
+
seed
|
91
|
+
@mentionner1.mention!(@mentionable1)
|
92
|
+
end
|
93
|
+
|
94
|
+
should "delete its Mention records" do
|
95
|
+
@mentionable1.destroy
|
96
|
+
assert_equal false, @mentionner1.mentions?(@mentionable1)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def seed
|
101
|
+
@mentionner1 = ImAMentionner.create
|
102
|
+
@mentionner2 = ImAMentionner.create
|
103
|
+
@mentionable1 = ImAMentionable.create
|
104
|
+
@mentionable2 = ImAMentionable.create
|
105
|
+
@mentionner_and_mentionable = ImAMentionnerAndMentionable.create
|
106
|
+
end
|
107
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -27,6 +27,12 @@ ActiveRecord::Schema.define(:version => 0) do
|
|
27
27
|
t.string :name
|
28
28
|
end
|
29
29
|
|
30
|
+
create_table :comments do |t|
|
31
|
+
t.integer :user_id
|
32
|
+
t.integer :movie_id
|
33
|
+
t.string :body
|
34
|
+
end
|
35
|
+
|
30
36
|
create_table :follows do |t|
|
31
37
|
t.string :follower_type
|
32
38
|
t.integer :follower_id
|
@@ -43,6 +49,14 @@ ActiveRecord::Schema.define(:version => 0) do
|
|
43
49
|
t.datetime :created_at
|
44
50
|
end
|
45
51
|
|
52
|
+
create_table :mentions do |t|
|
53
|
+
t.string :mentionner_type
|
54
|
+
t.integer :mentionner_id
|
55
|
+
t.string :mentionable_type
|
56
|
+
t.integer :mentionable_id
|
57
|
+
t.datetime :created_at
|
58
|
+
end
|
59
|
+
|
46
60
|
create_table :im_a_followers do |t|
|
47
61
|
t.timestamps
|
48
62
|
end
|
@@ -58,10 +72,27 @@ ActiveRecord::Schema.define(:version => 0) do
|
|
58
72
|
create_table :im_a_likeables do |t|
|
59
73
|
t.timestamps
|
60
74
|
end
|
75
|
+
|
76
|
+
create_table :im_a_mentionners do |t|
|
77
|
+
t.timestamps
|
78
|
+
end
|
79
|
+
|
80
|
+
create_table :im_a_mentionables do |t|
|
81
|
+
t.timestamps
|
82
|
+
end
|
83
|
+
|
84
|
+
create_table :im_a_mentionner_and_mentionables do |t|
|
85
|
+
t.timestamps
|
86
|
+
end
|
87
|
+
|
88
|
+
create_table :vanillas do |t|
|
89
|
+
t.timestamps
|
90
|
+
end
|
61
91
|
end
|
62
92
|
|
63
93
|
class Celebrity < ActiveRecord::Base
|
64
94
|
acts_as_followable
|
95
|
+
acts_as_mentionable
|
65
96
|
end
|
66
97
|
|
67
98
|
class User < ActiveRecord::Base
|
@@ -69,10 +100,20 @@ class User < ActiveRecord::Base
|
|
69
100
|
acts_as_followable
|
70
101
|
acts_as_liker
|
71
102
|
acts_as_likeable
|
103
|
+
acts_as_mentionable
|
104
|
+
|
105
|
+
has_many :comments
|
106
|
+
end
|
107
|
+
|
108
|
+
class Comment < ActiveRecord::Base
|
109
|
+
acts_as_mentionner
|
110
|
+
belongs_to :user
|
111
|
+
belongs_to :movie
|
72
112
|
end
|
73
113
|
|
74
114
|
class Movie < ActiveRecord::Base
|
75
115
|
acts_as_likeable
|
116
|
+
has_many :comments
|
76
117
|
end
|
77
118
|
|
78
119
|
class Follow < ActiveRecord::Base
|
@@ -83,6 +124,10 @@ class Like < ActiveRecord::Base
|
|
83
124
|
acts_as_like_store
|
84
125
|
end
|
85
126
|
|
127
|
+
class Mention < ActiveRecord::Base
|
128
|
+
acts_as_mention_store
|
129
|
+
end
|
130
|
+
|
86
131
|
class ImAFollower < ActiveRecord::Base
|
87
132
|
acts_as_follower
|
88
133
|
end
|
@@ -98,3 +143,19 @@ end
|
|
98
143
|
class ImALikeable < ActiveRecord::Base
|
99
144
|
acts_as_likeable
|
100
145
|
end
|
146
|
+
|
147
|
+
class ImAMentionner < ActiveRecord::Base
|
148
|
+
acts_as_mentionner
|
149
|
+
end
|
150
|
+
|
151
|
+
class ImAMentionable < ActiveRecord::Base
|
152
|
+
acts_as_mentionable
|
153
|
+
end
|
154
|
+
|
155
|
+
class ImAMentionnerAndMentionable < ActiveRecord::Base
|
156
|
+
acts_as_mentionner
|
157
|
+
acts_as_mentionable
|
158
|
+
end
|
159
|
+
|
160
|
+
class Vanilla < ActiveRecord::Base
|
161
|
+
end
|
data/test/world_test.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
|
-
require File.dirname(__FILE__)+'/test_helper'
|
1
|
+
require File.expand_path(File.dirname(__FILE__))+'/test_helper'
|
2
2
|
|
3
3
|
# Test Socialization as it would be used in a "real world" scenario
|
4
4
|
class WorldTest < Test::Unit::TestCase
|
5
|
-
attr_reader :users, :movies, :celebs
|
6
|
-
|
5
|
+
attr_reader :users, :movies, :celebs, :comments
|
7
6
|
|
8
7
|
context "The World" do
|
9
8
|
setup do
|
@@ -24,12 +23,12 @@ class WorldTest < Test::Unit::TestCase
|
|
24
23
|
|
25
24
|
carl.like!(pulp)
|
26
25
|
camilo.like!(pulp)
|
27
|
-
assert_equal 3, pulp.likers.size
|
26
|
+
assert_equal 3, pulp.likers(User).size
|
28
27
|
|
29
|
-
assert pulp.likers.include?(carl)
|
30
|
-
assert pulp.likers.include?(john)
|
31
|
-
assert pulp.likers.include?(camilo)
|
32
|
-
assert !pulp.likers.include?(mat)
|
28
|
+
assert pulp.likers(User).include?(carl)
|
29
|
+
assert pulp.likers(User).include?(john)
|
30
|
+
assert pulp.likers(User).include?(camilo)
|
31
|
+
assert !pulp.likers(User).include?(mat)
|
33
32
|
|
34
33
|
carl.follow!(mat)
|
35
34
|
mat.follow!(carl)
|
@@ -47,7 +46,7 @@ class WorldTest < Test::Unit::TestCase
|
|
47
46
|
end
|
48
47
|
|
49
48
|
assert_raise ArgumentError do
|
50
|
-
john.follow!(
|
49
|
+
john.follow!(kill_bill) # Can't follow a movie
|
51
50
|
end
|
52
51
|
|
53
52
|
assert_raise ArgumentError do
|
@@ -57,27 +56,37 @@ class WorldTest < Test::Unit::TestCase
|
|
57
56
|
assert_raise ArgumentError do
|
58
57
|
john.like!(john) # Can't like yourself, duh!
|
59
58
|
end
|
59
|
+
|
60
|
+
comment = john.comments.create(:body => "I think Tami and Carl would like this movie!", :movie_id => pulp.id)
|
61
|
+
comment.mention!(tami)
|
62
|
+
comment.mention!(carl)
|
63
|
+
assert comment.mentions?(carl)
|
64
|
+
assert carl.mentioned_by?(comment)
|
65
|
+
assert comment.mentions?(tami)
|
66
|
+
assert tami.mentioned_by?(comment)
|
60
67
|
end
|
61
68
|
end
|
62
69
|
|
63
70
|
def seed
|
64
|
-
@users
|
65
|
-
@celebs
|
66
|
-
@movies
|
67
|
-
|
68
|
-
|
69
|
-
@users[:
|
70
|
-
@users[:
|
71
|
-
@users[:
|
72
|
-
@users[:
|
73
|
-
|
74
|
-
@
|
71
|
+
@users = {}
|
72
|
+
@celebs = {}
|
73
|
+
@movies = {}
|
74
|
+
@comments = {}
|
75
|
+
|
76
|
+
@users[:john] = User.create :name => 'John Doe'
|
77
|
+
@users[:jane] = User.create :name => 'Jane Doe'
|
78
|
+
@users[:mat] = User.create :name => 'Mat'
|
79
|
+
@users[:carl] = User.create :name => 'Carl'
|
80
|
+
@users[:camilo] = User.create :name => 'Camilo'
|
81
|
+
@users[:tami] = User.create :name => 'Tami'
|
82
|
+
|
83
|
+
@movies[:pulp] = Movie.create :name => 'Pulp Fiction'
|
75
84
|
@movies[:reservoir] = Movie.create :name => 'Reservoir Dogs'
|
76
|
-
@movies[:
|
85
|
+
@movies[:kill_bill] = Movie.create :name => 'Kill Bill'
|
77
86
|
|
78
|
-
@celebs[:willis]
|
79
|
-
@celebs[:travolta]
|
80
|
-
@celebs[:jackson]
|
87
|
+
@celebs[:willis] = Celebrity.create :name => 'Bruce Willis'
|
88
|
+
@celebs[:travolta] = Celebrity.create :name => 'John Travolta'
|
89
|
+
@celebs[:jackson] = Celebrity.create :name => 'Samuel L. Jackson'
|
81
90
|
end
|
82
91
|
|
83
92
|
def method_missing(meth, *args, &block)
|
@@ -85,6 +94,7 @@ class WorldTest < Test::Unit::TestCase
|
|
85
94
|
return users[sym] if users[sym]
|
86
95
|
return celebs[sym] if celebs[sym]
|
87
96
|
return movies[sym] if movies[sym]
|
97
|
+
return comments[sym] if comments[sym]
|
88
98
|
super
|
89
99
|
end
|
90
100
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: socialization
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-02-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
16
|
-
requirement: &
|
16
|
+
requirement: &70124582578560 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70124582578560
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: appraisal
|
27
|
-
requirement: &
|
27
|
+
requirement: &70124582578140 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70124582578140
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: logger
|
38
|
-
requirement: &
|
38
|
+
requirement: &70124582577720 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70124582577720
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: mocha
|
49
|
-
requirement: &
|
49
|
+
requirement: &70124582577300 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70124582577300
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: shoulda
|
60
|
-
requirement: &
|
60
|
+
requirement: &70124582576880 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70124582576880
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: sqlite3
|
71
|
-
requirement: &
|
71
|
+
requirement: &70124582576460 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70124582576460
|
80
80
|
description: Socialization allows any model to Follow and/or Like any other model.
|
81
81
|
This is accomplished through a double polymorphic relationship on the Follow and
|
82
82
|
Like models. But you don't need to know that since all the complexity is hidden
|
@@ -88,6 +88,7 @@ extra_rdoc_files:
|
|
88
88
|
- README.rdoc
|
89
89
|
files:
|
90
90
|
- .gitignore
|
91
|
+
- .travis.yml
|
91
92
|
- Appraisals
|
92
93
|
- Gemfile
|
93
94
|
- LICENSE
|
@@ -105,8 +106,10 @@ files:
|
|
105
106
|
- demo/demo_app/app/mailers/.gitkeep
|
106
107
|
- demo/demo_app/app/models/.gitkeep
|
107
108
|
- demo/demo_app/app/models/celebrity.rb
|
109
|
+
- demo/demo_app/app/models/comment.rb
|
108
110
|
- demo/demo_app/app/models/follow.rb
|
109
111
|
- demo/demo_app/app/models/like.rb
|
112
|
+
- demo/demo_app/app/models/mention.rb
|
110
113
|
- demo/demo_app/app/models/movie.rb
|
111
114
|
- demo/demo_app/app/models/user.rb
|
112
115
|
- demo/demo_app/app/views/layouts/application.html.erb
|
@@ -131,6 +134,8 @@ files:
|
|
131
134
|
- demo/demo_app/db/migrate/20120115051255_create_celebrities.rb
|
132
135
|
- demo/demo_app/db/migrate/20120115054646_create_follows.rb
|
133
136
|
- demo/demo_app/db/migrate/20120115054647_create_likes.rb
|
137
|
+
- demo/demo_app/db/migrate/20120221200644_create_mentions.rb
|
138
|
+
- demo/demo_app/db/migrate/20120221202703_create_comments.rb
|
134
139
|
- demo/demo_app/db/schema.rb
|
135
140
|
- demo/demo_app/db/seeds.rb
|
136
141
|
- demo/demo_app/doc/README_FOR_APP
|
@@ -158,12 +163,20 @@ files:
|
|
158
163
|
- demo/demo_app/vendor/assets/javascripts/.gitkeep
|
159
164
|
- demo/demo_app/vendor/assets/stylesheets/.gitkeep
|
160
165
|
- demo/demo_app/vendor/plugins/.gitkeep
|
166
|
+
- gemfiles/activerecord30.gemfile
|
167
|
+
- gemfiles/activerecord30.gemfile.lock
|
168
|
+
- gemfiles/activerecord31.gemfile
|
169
|
+
- gemfiles/activerecord31.gemfile.lock
|
170
|
+
- gemfiles/activerecord32.gemfile
|
171
|
+
- gemfiles/activerecord32.gemfile.lock
|
161
172
|
- generators/socialization/USAGE
|
162
173
|
- generators/socialization/socialization_generator.rb
|
163
174
|
- generators/socialization/templates/migration_follows.rb
|
164
175
|
- generators/socialization/templates/migration_likes.rb
|
176
|
+
- generators/socialization/templates/migration_mentions.rb
|
165
177
|
- generators/socialization/templates/model_follow.rb
|
166
178
|
- generators/socialization/templates/model_like.rb
|
179
|
+
- generators/socialization/templates/model_mention.rb
|
167
180
|
- init.rb
|
168
181
|
- lib/generators/socialization/socialization_generator.rb
|
169
182
|
- lib/socialization.rb
|
@@ -174,10 +187,14 @@ files:
|
|
174
187
|
- lib/socialization/like_store.rb
|
175
188
|
- lib/socialization/likeable.rb
|
176
189
|
- lib/socialization/liker.rb
|
190
|
+
- lib/socialization/mention_store.rb
|
191
|
+
- lib/socialization/mentionable.rb
|
192
|
+
- lib/socialization/mentionner.rb
|
177
193
|
- lib/socialization/version.rb
|
178
194
|
- socialization.gemspec
|
179
195
|
- test/follow_test.rb
|
180
196
|
- test/like_test.rb
|
197
|
+
- test/mention_test.rb
|
181
198
|
- test/test_helper.rb
|
182
199
|
- test/world_test.rb
|
183
200
|
homepage: https://github.com/cmer/socialization
|
@@ -201,13 +218,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
201
218
|
version: '0'
|
202
219
|
requirements: []
|
203
220
|
rubyforge_project:
|
204
|
-
rubygems_version: 1.8.
|
221
|
+
rubygems_version: 1.8.11
|
205
222
|
signing_key:
|
206
223
|
specification_version: 3
|
207
224
|
summary: Easily socialize your app with Likes and Follows
|
208
225
|
test_files:
|
209
226
|
- test/follow_test.rb
|
210
227
|
- test/like_test.rb
|
228
|
+
- test/mention_test.rb
|
211
229
|
- test/test_helper.rb
|
212
230
|
- test/world_test.rb
|
213
|
-
has_rdoc: true
|