acts_as_chattable 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/MIT-LICENSE +1 -1
- data/README.md +20 -83
- data/VERSION +1 -1
- data/acts_as_chattable.gemspec +1 -1
- data/coverage/.last_run.json +1 -1
- data/coverage/.resultset.json +31 -26
- data/lib/acts_as_chattable/model.rb +8 -0
- data/lib/acts_as_chattable/relation.rb +0 -3
- data/spec/acts_as_chattable_spec.rb +9 -9
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f8e906e0614193eeee9549776718acea58a3b28
|
4
|
+
data.tar.gz: f3598cd1632b6eb2654e8622a59dd2db5a0a7688
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2e4e893e082032e62e21fa27150593105ce18668b32fc309e7a4b8ea1f591ffade5becbc2f63e2db4159def3f3f51fc63881ece46f602f1d9fc65f21b1fcb97
|
7
|
+
data.tar.gz: 060419d0e25833962b3699db90a380bb3fba42d2c79ecdeb1bc967c493d32093ee5619eb67bcc6bebb66d51af4fb43dd25f89d85f0a429e18293ff2a2802fc96
|
data/MIT-LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
ActsAsChattable
|
2
2
|
=================
|
3
3
|
|
4
|
-
The Acts As Chattable allows communication between
|
4
|
+
The Acts As Chattable allows communication between models.
|
5
|
+
|
6
|
+
It was designed for a mobile app that needs private communications with attachments, like the iPhone SMS app for example.
|
5
7
|
|
6
8
|
[![Build Status](https://secure.travis-ci.org/LTe/acts-as-messageable.png)](http://travis-ci.org/LTe/acts-as-messageable)
|
7
9
|
[![Dependency Status](https://gemnasium.com/LTe/acts-as-messageable.png)](https://gemnasium.com/LTe/acts-as-messageable)
|
@@ -33,8 +35,8 @@ Usage
|
|
33
35
|
|
34
36
|
```ruby
|
35
37
|
class User < ActiveRecord::Base
|
36
|
-
|
37
|
-
|
38
|
+
acts_as_chattable :required => :body # default [:body]
|
39
|
+
:dependent => :destroy # default :nullify
|
38
40
|
end
|
39
41
|
```
|
40
42
|
|
@@ -45,14 +47,14 @@ Send message
|
|
45
47
|
@alice = User.first
|
46
48
|
@bob = User.last
|
47
49
|
|
48
|
-
@alice.send_message(@bob, "
|
49
|
-
@bob.send_message(@alice,
|
50
|
+
@alice.send_message(@bob, "Hi bob!")
|
51
|
+
@bob.send_message(@alice, Hi alice!")
|
50
52
|
```
|
51
53
|
|
52
54
|
## With hash
|
53
55
|
|
54
56
|
```ruby
|
55
|
-
@alice.send_message(@bob, { :body => "Hash body"
|
57
|
+
@alice.send_message(@bob, { :body => "Hash body" })
|
56
58
|
```
|
57
59
|
|
58
60
|
Custom required (validation)
|
@@ -62,7 +64,7 @@ In User model
|
|
62
64
|
|
63
65
|
```ruby
|
64
66
|
class User < ActiveRecord::Base
|
65
|
-
|
67
|
+
acts_as_chattable :required => :body
|
66
68
|
end
|
67
69
|
```
|
68
70
|
|
@@ -78,55 +80,6 @@ end
|
|
78
80
|
@alice.send_message(@bob, "body")
|
79
81
|
```
|
80
82
|
|
81
|
-
## Required sequence
|
82
|
-
|
83
|
-
```ruby
|
84
|
-
class User < ActiveRecord::Base
|
85
|
-
acts_as_messageable :required => [:body, :topic]
|
86
|
-
end
|
87
|
-
|
88
|
-
@alice.send_message(@bob, "body", "topic")
|
89
|
-
```
|
90
|
-
|
91
|
-
## First topic
|
92
|
-
|
93
|
-
```ruby
|
94
|
-
class User < ActiveRecord::Base
|
95
|
-
acts_as_messageable :required => [:topic, :body]
|
96
|
-
end
|
97
|
-
|
98
|
-
@alice.send_message(@bob, "topic", "body")
|
99
|
-
```
|
100
|
-
|
101
|
-
Custom class
|
102
|
-
============
|
103
|
-
|
104
|
-
You can use your own class that will represent the message object. First of all create custom class
|
105
|
-
|
106
|
-
```ruby
|
107
|
-
class CustomMessage < ActsAsMessageable::Message
|
108
|
-
def capitalize_title
|
109
|
-
title.capitalize
|
110
|
-
end
|
111
|
-
end
|
112
|
-
```
|
113
|
-
|
114
|
-
After that you can sepcify custom class in options.
|
115
|
-
|
116
|
-
```ruby
|
117
|
-
class User
|
118
|
-
acts_as_messageable :class_name => "CustomMessage"
|
119
|
-
end
|
120
|
-
```
|
121
|
-
|
122
|
-
From now on, your message has custom class.
|
123
|
-
|
124
|
-
```ruby
|
125
|
-
@message = @alice.send_message(@bob, "hi!")
|
126
|
-
@message # => #<CustomMessage:0x000000024b6278>
|
127
|
-
@message.capitalize_title # => "Hi!"
|
128
|
-
```
|
129
|
-
|
130
83
|
Conversation
|
131
84
|
============
|
132
85
|
|
@@ -288,32 +241,6 @@ end
|
|
288
241
|
@alice.restore_message(@message) # @alice restore message from trash
|
289
242
|
```
|
290
243
|
|
291
|
-
Group message
|
292
|
-
=============
|
293
|
-
|
294
|
-
## Enable group messages
|
295
|
-
|
296
|
-
```ruby
|
297
|
-
class User
|
298
|
-
acts_as_messageable :group_messages => true
|
299
|
-
end
|
300
|
-
```
|
301
|
-
|
302
|
-
## How to join other users's conversation
|
303
|
-
|
304
|
-
```ruby
|
305
|
-
@message = @alice.send_message(@bob, :topic => "Helou bob!", :body => "What's up?")
|
306
|
-
@reply_message = @sukhi.reply_to(@message, "Hi there!", "I would like to join to this conversation!")
|
307
|
-
@sec_reply_message = @bob.reply_to(@message, "Hi!", "Fine!")
|
308
|
-
@third_reply_message = @alice.reply_to(@reply_message, "hi!", "no problem")
|
309
|
-
```
|
310
|
-
|
311
|
-
## Know the people involved in conversation
|
312
|
-
|
313
|
-
```ruby
|
314
|
-
@message.people # will give you participants users object
|
315
|
-
@message.people # => [@alice, @bob, @sukhi]
|
316
|
-
```
|
317
244
|
|
318
245
|
Search
|
319
246
|
======
|
@@ -324,4 +251,14 @@ Search
|
|
324
251
|
@alice.messages.search("Search me") @alice seach text "Search me" from all messages
|
325
252
|
```
|
326
253
|
|
327
|
-
|
254
|
+
Gem
|
255
|
+
===========
|
256
|
+
```
|
257
|
+
rspec spec
|
258
|
+
rake gemspec
|
259
|
+
gem build acts_as_chattable.gemspec
|
260
|
+
gem push acts_as_chattable-0.0.x.gem
|
261
|
+
|
262
|
+
|
263
|
+
|
264
|
+
Copyright © 2013 Ben Bruscella, released under the MIT license
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/acts_as_chattable.gemspec
CHANGED
data/coverage/.last_run.json
CHANGED
data/coverage/.resultset.json
CHANGED
@@ -53,36 +53,36 @@
|
|
53
53
|
null,
|
54
54
|
null,
|
55
55
|
1,
|
56
|
-
|
56
|
+
31,
|
57
57
|
null,
|
58
58
|
null,
|
59
59
|
null,
|
60
60
|
null,
|
61
61
|
null,
|
62
|
-
|
62
|
+
31,
|
63
63
|
null,
|
64
|
-
|
64
|
+
31,
|
65
65
|
null,
|
66
66
|
null,
|
67
67
|
null,
|
68
|
-
|
68
|
+
31,
|
69
69
|
null,
|
70
70
|
null,
|
71
71
|
null,
|
72
72
|
null,
|
73
|
-
|
73
|
+
31,
|
74
74
|
null,
|
75
|
-
|
76
|
-
|
75
|
+
31,
|
76
|
+
31,
|
77
77
|
null,
|
78
78
|
0,
|
79
79
|
0,
|
80
80
|
null,
|
81
81
|
null,
|
82
|
-
|
83
|
-
|
82
|
+
31,
|
83
|
+
31,
|
84
84
|
null,
|
85
|
-
|
85
|
+
31,
|
86
86
|
null,
|
87
87
|
null,
|
88
88
|
null,
|
@@ -95,6 +95,7 @@
|
|
95
95
|
null,
|
96
96
|
1,
|
97
97
|
null,
|
98
|
+
null,
|
98
99
|
1,
|
99
100
|
35,
|
100
101
|
35,
|
@@ -102,6 +103,13 @@
|
|
102
103
|
35,
|
103
104
|
null,
|
104
105
|
null,
|
106
|
+
1,
|
107
|
+
null,
|
108
|
+
null,
|
109
|
+
null,
|
110
|
+
4,
|
111
|
+
null,
|
112
|
+
null,
|
105
113
|
null,
|
106
114
|
1,
|
107
115
|
12,
|
@@ -132,23 +140,23 @@
|
|
132
140
|
null,
|
133
141
|
null,
|
134
142
|
1,
|
135
|
-
|
143
|
+
38,
|
136
144
|
null,
|
137
|
-
|
145
|
+
38,
|
138
146
|
null,
|
139
|
-
|
140
|
-
|
147
|
+
37,
|
148
|
+
37,
|
141
149
|
null,
|
142
150
|
null,
|
143
151
|
1,
|
144
152
|
null,
|
145
153
|
null,
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
154
|
+
38,
|
155
|
+
38,
|
156
|
+
38,
|
157
|
+
38,
|
150
158
|
null,
|
151
|
-
|
159
|
+
38,
|
152
160
|
null,
|
153
161
|
null,
|
154
162
|
null,
|
@@ -210,9 +218,6 @@
|
|
210
218
|
null,
|
211
219
|
null,
|
212
220
|
null,
|
213
|
-
1,
|
214
|
-
0,
|
215
|
-
null,
|
216
221
|
null,
|
217
222
|
null
|
218
223
|
],
|
@@ -306,7 +311,7 @@
|
|
306
311
|
null,
|
307
312
|
null,
|
308
313
|
1,
|
309
|
-
|
314
|
+
133,
|
310
315
|
null,
|
311
316
|
null,
|
312
317
|
1,
|
@@ -314,14 +319,14 @@
|
|
314
319
|
null,
|
315
320
|
null,
|
316
321
|
1,
|
317
|
-
|
322
|
+
132,
|
318
323
|
null,
|
319
324
|
null,
|
320
325
|
null
|
321
326
|
],
|
322
327
|
"/Users/benbruscella/Projects/Github/acts_as_chattable/spec/support/send_message.rb": [
|
323
328
|
1,
|
324
|
-
|
329
|
+
34,
|
325
330
|
null
|
326
331
|
],
|
327
332
|
"/Users/benbruscella/Projects/Github/acts_as_chattable/spec/support/user.rb": [
|
@@ -333,6 +338,6 @@
|
|
333
338
|
null
|
334
339
|
]
|
335
340
|
},
|
336
|
-
"timestamp":
|
341
|
+
"timestamp": 1376119382
|
337
342
|
}
|
338
343
|
}
|
@@ -55,6 +55,7 @@ module ActsAsChattable
|
|
55
55
|
end
|
56
56
|
|
57
57
|
module InstanceMethods
|
58
|
+
|
58
59
|
# @return [ActiveRecord::Relation] all messages connected with user
|
59
60
|
def messages(trash = false)
|
60
61
|
result = self.class.messages_class_name.connected_with(self, trash)
|
@@ -63,6 +64,13 @@ module ActsAsChattable
|
|
63
64
|
result
|
64
65
|
end
|
65
66
|
|
67
|
+
def messages_with(friend)
|
68
|
+
ActsAsChattable::Message.where("(received_messageable_id = #{self.id} AND sent_messageable_id = #{friend.id})
|
69
|
+
OR
|
70
|
+
(sent_messageable_id = #{self.id} AND received_messageable_id = #{friend.id})")
|
71
|
+
.order('id DESC')
|
72
|
+
end
|
73
|
+
|
66
74
|
# @return [ActiveRecord::Relation] returns all messages from inbox
|
67
75
|
def received_messages
|
68
76
|
result = ActsAsChattable.rails_api.new(received_messages_relation)
|
@@ -157,14 +157,14 @@ describe "ActsAsChattable" do
|
|
157
157
|
@bob.messages.first.body == "Body"
|
158
158
|
end
|
159
159
|
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
160
|
+
describe "conversation" do
|
161
|
+
it "bob send message to alice, and alice reply to bob message and show proper tree" do
|
162
|
+
@alice.send_message(@bob, "Re: Body")
|
163
|
+
@alice.messages_with(@bob).size.should eq(2)
|
164
|
+
@alice.messages_with(@bob).last.body.should == "Body"
|
165
|
+
@alice.messages_with(@bob).first.body.should == "Re: Body"
|
166
|
+
@bob.messages_with(@alice).size.should eq(2)
|
167
|
+
end
|
168
168
|
|
169
169
|
# it "bob send message to alice, alice answer, and bob answer for alice answer" do
|
170
170
|
# @reply_message = @alice.reply_to(@message, "Re: Topic", "Body")
|
@@ -177,7 +177,7 @@ describe "ActsAsChattable" do
|
|
177
177
|
# @message.conversation.first.should == @reply_reply_message
|
178
178
|
# @reply_reply_message.conversation.first.should == @reply_reply_message
|
179
179
|
# end
|
180
|
-
|
180
|
+
end
|
181
181
|
|
182
182
|
# describe "conversations" do
|
183
183
|
# before do
|