emotions 0.2.2 → 0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +8 -0
- data/README.md +10 -8
- data/lib/emotions.rb +4 -0
- data/lib/emotions/emotion.rb +21 -19
- data/lib/emotions/emotional.rb +1 -1
- data/lib/emotions/emotive.rb +1 -1
- data/lib/emotions/version.rb +1 -1
- data/lib/generators/emotions/install_generator.rb +4 -0
- data/lib/generators/emotions/templates/model.rb +3 -0
- data/spec/emotions/emotion_spec.rb +7 -7
- data/spec/emotions/emotional_spec.rb +4 -6
- data/spec/spec_helper.rb +5 -0
- metadata +21 -38
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b3ae5e838c6776b24d5c8f2cfaacc928561feb1d
|
4
|
+
data.tar.gz: 68c6d7912a1b2ac6ae002620738d54e9779bb824
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 18c67e3d42f3651fc1b93a81bc9929e615baa0f4dac1f28ca29e705c215c9e511c8491cf247cd857ce79b67b7ce5bd434b7f2949f3b4efb62bebe1b606f4bbc4
|
7
|
+
data.tar.gz: 04abf2116166994f2e5198b39b12403b9066bac12d208416da9ba345d83c3a84de5e94c87f31e7f98045585c3b2726000681217e363543b09e232a533b3db17e
|
data/.travis.yml
CHANGED
@@ -5,3 +5,11 @@ rvm:
|
|
5
5
|
- 1.9.3
|
6
6
|
|
7
7
|
script: "echo 'DO IT' && bundle exec rake spec"
|
8
|
+
|
9
|
+
notifications:
|
10
|
+
hipchat:
|
11
|
+
rooms:
|
12
|
+
secure: "a2x/YxxMGECIjhHO8xeTKJy4R1sKEqae/F/Ufg/KJFSuZ86UAraTKTsk8cLzU+pv/G59MxMmaRsMqoT9KhiGpOPILC0p/JlIlSHt39+wkoAxE3t0J0Lf6Ywzk3t7KC2RmyYvhlbEeKIGBYfkf51RdxWa1lHG0/hO6jWlxNnNOTw="
|
13
|
+
template:
|
14
|
+
- '%{repository}#%{build_number} (%{branch} - %{commit} : %{author}): %{message} (<a href="%{build_url}">Build</a>/<a href="%{compare_url}">Changes</a>)'
|
15
|
+
format: 'html'
|
data/README.md
CHANGED
@@ -5,9 +5,9 @@
|
|
5
5
|
<br />
|
6
6
|
Emotions is a Ruby library that allows ActiveRecord records to<br /> express (and hopefully store) emotions about other records.
|
7
7
|
<br /><br />
|
8
|
-
<a href="https://rubygems.org/gems/emotions"><img src="
|
9
|
-
<a href="https://codeclimate.com/github/mirego/emotions"><img src="
|
10
|
-
<a href="https://travis-ci.org/mirego/emotions"><img src="
|
8
|
+
<a href="https://rubygems.org/gems/emotions"><img src="http://img.shields.io/gem/v/emotions.svg" /></a>
|
9
|
+
<a href="https://codeclimate.com/github/mirego/emotions"><img src="http://img.shields.io/codeclimate/github/mirego/emotions.svg" /></a>
|
10
|
+
<a href="https://travis-ci.org/mirego/emotions"><img src="http://img.shields.io/travis/mirego/emotions.svg" /></a>
|
11
11
|
</p>
|
12
12
|
|
13
13
|
---
|
@@ -26,7 +26,7 @@ And then execute:
|
|
26
26
|
$ bundle
|
27
27
|
```
|
28
28
|
|
29
|
-
Run the migration to add the `emotions` table:
|
29
|
+
Run the migration to add the `emotions` table and the `Emotion` model:
|
30
30
|
|
31
31
|
```bash
|
32
32
|
$ rails generate emotions:install
|
@@ -80,9 +80,11 @@ user.sad_about?(picure)
|
|
80
80
|
# => true
|
81
81
|
```
|
82
82
|
|
83
|
+
## Cache counters
|
84
|
+
|
83
85
|
Most of the times, you would want to get a quick look at about how many users expressed a certain emotion towards a certain picture. That could be an expensive operation.
|
84
86
|
|
85
|
-
However, if the *emotive* record has an `<emotion>_emotions_count` column, Emotions will populate its value with how many
|
87
|
+
However, if the *emotive* record has an `<emotion>_emotions_count` column, Emotions will populate its value with how many emotional records expressed that emotion towards it.
|
86
88
|
|
87
89
|
```ruby
|
88
90
|
user.happy_about!(picture)
|
@@ -94,7 +96,7 @@ picture.happy_emotions_count
|
|
94
96
|
# Quick lookup into the column and returns `1`
|
95
97
|
```
|
96
98
|
|
97
|
-
Same thing for emotional records. If there’s a `
|
99
|
+
Same thing for emotional records. If there’s a `<emotion>_emotions_count` column in the emotional model, Emotions will update it each time one of its records expresses that emotion towards another record.
|
98
100
|
|
99
101
|
```ruby
|
100
102
|
user.happy_about!(picture)
|
@@ -112,6 +114,6 @@ user.happy_emotions_count
|
|
112
114
|
|
113
115
|
## About Mirego
|
114
116
|
|
115
|
-
Mirego is a team of passionate people who believe that work is a place where you can innovate and have fun. We
|
117
|
+
[Mirego](http://mirego.com) is a team of passionate people who believe that work is a place where you can innovate and have fun. We're a team of [talented people](http://life.mirego.com) who imagine and build beautiful Web and mobile applications. We come together to share ideas and [change the world](http://mirego.org).
|
116
118
|
|
117
|
-
We also love
|
119
|
+
We also [love open-source software](http://open.mirego.com) and we try to give back to the community as much as we can.
|
data/lib/emotions.rb
CHANGED
data/lib/emotions/emotion.rb
CHANGED
@@ -1,23 +1,25 @@
|
|
1
1
|
module Emotions
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
2
|
+
module Emotion
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
# Validations
|
7
|
+
validates :emotional, presence: true
|
8
|
+
validates :emotive, presence: true
|
9
|
+
|
10
|
+
# Custom validations
|
11
|
+
validate :ensure_valid_emotion_name
|
12
|
+
validate { ensure_valid_associated_record :emotional }
|
13
|
+
validate { ensure_valid_associated_record :emotive }
|
14
|
+
|
15
|
+
# Associations
|
16
|
+
belongs_to :emotional, polymorphic: true
|
17
|
+
belongs_to :emotive, polymorphic: true
|
18
|
+
|
19
|
+
# Callbacks
|
20
|
+
after_create :update_emotion_counter
|
21
|
+
after_destroy :update_emotion_counter
|
22
|
+
end
|
21
23
|
|
22
24
|
protected
|
23
25
|
|
data/lib/emotions/emotional.rb
CHANGED
@@ -3,7 +3,7 @@ module Emotions
|
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
5
|
included do
|
6
|
-
has_many :emotions, as: :emotional, class_name: '
|
6
|
+
has_many :emotions, as: :emotional, class_name: '::Emotion', dependent: :destroy
|
7
7
|
|
8
8
|
Emotions.emotions.each do |emotion|
|
9
9
|
define_emotion_methods(emotion)
|
data/lib/emotions/emotive.rb
CHANGED
@@ -3,7 +3,7 @@ module Emotions
|
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
5
|
included do
|
6
|
-
has_many :emotions, as: :emotive, class_name: '
|
6
|
+
has_many :emotions, as: :emotive, class_name: '::Emotion', dependent: :destroy
|
7
7
|
|
8
8
|
Emotions.emotions.each do |emotion|
|
9
9
|
define_emotion_methods(emotion)
|
data/lib/emotions/version.rb
CHANGED
@@ -18,7 +18,7 @@ describe Emotions::Emotion do
|
|
18
18
|
|
19
19
|
describe :Validations do
|
20
20
|
describe :validate_presence_of_emotional do
|
21
|
-
subject {
|
21
|
+
subject { Emotion.new(emotion: 'happy', emotive: Picture.create) }
|
22
22
|
before { subject.valid? }
|
23
23
|
|
24
24
|
it { should_not be_valid }
|
@@ -26,7 +26,7 @@ describe Emotions::Emotion do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
describe :validate_presence_of_emotive do
|
29
|
-
subject {
|
29
|
+
subject { Emotion.new(emotion: 'happy', emotional: User.create) }
|
30
30
|
before { subject.valid? }
|
31
31
|
|
32
32
|
it { should_not be_valid }
|
@@ -34,7 +34,7 @@ describe Emotions::Emotion do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
describe :validate_inclusion_of_emotion do
|
37
|
-
subject {
|
37
|
+
subject { Emotion.new(emotion: 'mad', emotional: User.create, emotive: Picture.create) }
|
38
38
|
before { subject.valid? }
|
39
39
|
|
40
40
|
it { should_not be_valid }
|
@@ -42,7 +42,7 @@ describe Emotions::Emotion do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
describe :validate_class_of_emotive do
|
45
|
-
subject {
|
45
|
+
subject { Emotion.new(emotion: 'happy', emotional: User.create, emotive: User.create) }
|
46
46
|
before { subject.valid? }
|
47
47
|
|
48
48
|
it { should_not be_valid }
|
@@ -50,7 +50,7 @@ describe Emotions::Emotion do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
describe :validate_class_of_emotional do
|
53
|
-
subject {
|
53
|
+
subject { Emotion.new(emotion: 'happy', emotional: Picture.create, emotive: Picture.create) }
|
54
54
|
before { subject.valid? }
|
55
55
|
|
56
56
|
it { should_not be_valid }
|
@@ -62,7 +62,7 @@ describe Emotions::Emotion do
|
|
62
62
|
describe :update_emotion_counter_on_create do
|
63
63
|
let(:picture) { Picture.create }
|
64
64
|
let(:user) { User.create }
|
65
|
-
let(:emotion) {
|
65
|
+
let(:emotion) { Emotion.new(emotion: 'happy', emotional: user, emotive: picture) }
|
66
66
|
|
67
67
|
before do
|
68
68
|
picture.should_receive(:update_emotion_counter).with('happy').once
|
@@ -76,7 +76,7 @@ describe Emotions::Emotion do
|
|
76
76
|
describe :update_emotion_counter_on_destroy do
|
77
77
|
let(:picture) { Picture.create }
|
78
78
|
let(:user) { User.create }
|
79
|
-
let(:emotion) {
|
79
|
+
let(:emotion) { Emotion.new(emotion: 'happy', emotional: user, emotive: picture) }
|
80
80
|
|
81
81
|
before do
|
82
82
|
emotion.save!
|
@@ -67,7 +67,7 @@ describe Emotions::Emotional do
|
|
67
67
|
let(:picture) { Picture.create }
|
68
68
|
|
69
69
|
context 'with valid emotive and emotion' do
|
70
|
-
it { expect{ user.express! :happy, picture }.to change{
|
70
|
+
it { expect{ user.express! :happy, picture }.to change{ Emotion.count }.from(0).to(1) }
|
71
71
|
it { expect{ user.express! :happy, picture }.to change{ user.happy_about? picture }.from(false).to(true) }
|
72
72
|
end
|
73
73
|
|
@@ -85,7 +85,7 @@ describe Emotions::Emotional do
|
|
85
85
|
before { user.happy_about!(picture) }
|
86
86
|
|
87
87
|
context 'with valid emotive and emotion' do
|
88
|
-
it { expect{ user.no_longer_express! :happy, picture }.to change{
|
88
|
+
it { expect{ user.no_longer_express! :happy, picture }.to change{ Emotion.count }.from(1).to(0) }
|
89
89
|
it { expect{ user.no_longer_express! :happy, picture }.to change{ user.happy_about? picture }.from(true).to(false) }
|
90
90
|
end
|
91
91
|
|
@@ -118,8 +118,7 @@ describe Emotions::Emotional do
|
|
118
118
|
let(:picture) { Picture.create }
|
119
119
|
|
120
120
|
context 'with valid emotive' do
|
121
|
-
it { expect
|
122
|
-
it { expect{ user.happy_about! picture }.to change{ Emotions::Emotion.count }.from(0).to(1) }
|
121
|
+
it { expect{ user.happy_about! picture }.to change{ Emotion.count }.from(0).to(1) }
|
123
122
|
it { expect{ user.happy_about! picture }.to change{ user.happy_about? picture }.from(false).to(true) }
|
124
123
|
end
|
125
124
|
|
@@ -133,8 +132,7 @@ describe Emotions::Emotional do
|
|
133
132
|
let(:picture) { Picture.create }
|
134
133
|
|
135
134
|
context 'with valid emotive' do
|
136
|
-
it { expect
|
137
|
-
it { expect{ user.no_longer_happy_about! picture }.to change{ Emotions::Emotion.count }.from(1).to(0) }
|
135
|
+
it { expect{ user.no_longer_happy_about! picture }.to change{ Emotion.count }.from(1).to(0) }
|
138
136
|
it { expect{ user.no_longer_happy_about! picture }.to change{ user.happy_about? picture }.from(true).to(false) }
|
139
137
|
end
|
140
138
|
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,94 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emotions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: '0.3'
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Rémi Prévost
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-11-17 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rails
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 3.0.0
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 3.0.0
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: bundler
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- - ~>
|
45
|
+
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '1.3'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- - ~>
|
52
|
+
- - "~>"
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '1.3'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rspec
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- - ~>
|
59
|
+
- - "~>"
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '2.13'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- - ~>
|
66
|
+
- - "~>"
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '2.13'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: sqlite3
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- - ~>
|
73
|
+
- - "~>"
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '1.3'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- - ~>
|
80
|
+
- - "~>"
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '1.3'
|
94
83
|
description: Emotions is a Ruby library that allows ActiveRecord records to express
|
@@ -99,9 +88,9 @@ executables: []
|
|
99
88
|
extensions: []
|
100
89
|
extra_rdoc_files: []
|
101
90
|
files:
|
102
|
-
- .gitignore
|
103
|
-
- .rspec
|
104
|
-
- .travis.yml
|
91
|
+
- ".gitignore"
|
92
|
+
- ".rspec"
|
93
|
+
- ".travis.yml"
|
105
94
|
- Gemfile
|
106
95
|
- LICENSE.md
|
107
96
|
- README.md
|
@@ -117,6 +106,7 @@ files:
|
|
117
106
|
- lib/generators/emotions/USAGE
|
118
107
|
- lib/generators/emotions/install_generator.rb
|
119
108
|
- lib/generators/emotions/templates/migration.rb
|
109
|
+
- lib/generators/emotions/templates/model.rb
|
120
110
|
- spec/emotions/emotion_spec.rb
|
121
111
|
- spec/emotions/emotional_spec.rb
|
122
112
|
- spec/emotions/emotive_spec.rb
|
@@ -126,33 +116,26 @@ files:
|
|
126
116
|
homepage: https://github.com/mirego/emotions
|
127
117
|
licenses:
|
128
118
|
- BSD 3-Clause
|
119
|
+
metadata: {}
|
129
120
|
post_install_message:
|
130
121
|
rdoc_options: []
|
131
122
|
require_paths:
|
132
123
|
- lib
|
133
124
|
required_ruby_version: !ruby/object:Gem::Requirement
|
134
|
-
none: false
|
135
125
|
requirements:
|
136
|
-
- -
|
126
|
+
- - ">="
|
137
127
|
- !ruby/object:Gem::Version
|
138
128
|
version: '0'
|
139
|
-
segments:
|
140
|
-
- 0
|
141
|
-
hash: 4067111532583262534
|
142
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
|
-
none: false
|
144
130
|
requirements:
|
145
|
-
- -
|
131
|
+
- - ">="
|
146
132
|
- !ruby/object:Gem::Version
|
147
133
|
version: '0'
|
148
|
-
segments:
|
149
|
-
- 0
|
150
|
-
hash: 4067111532583262534
|
151
134
|
requirements: []
|
152
135
|
rubyforge_project:
|
153
|
-
rubygems_version:
|
136
|
+
rubygems_version: 2.2.2
|
154
137
|
signing_key:
|
155
|
-
specification_version:
|
138
|
+
specification_version: 4
|
156
139
|
summary: Emotions is a Ruby library that allows ActiveRecord records to express (and
|
157
140
|
hopefully store) emotions about other records.
|
158
141
|
test_files:
|