acts-as-messageable 0.4.0 → 0.4.1

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/Gemfile CHANGED
@@ -6,7 +6,6 @@ gem "ancestry", "~> 1.2.4"
6
6
 
7
7
  group :development do
8
8
  gem "rspec", "~> 2.6.0"
9
- gem "bundler", "~> 1.0.0"
10
9
  gem "jeweler", "~> 1.6.0"
11
10
  gem "sqlite3-ruby"
12
11
  end
data/README.md ADDED
@@ -0,0 +1,165 @@
1
+
2
+ ActsAsMessageable
3
+ =================
4
+
5
+ The Acts As Messageable allows communication between the models.
6
+
7
+ [![Build Status](http://travis-ci.org/LTe/acts-as-messageable.png)](http://github.com/LTe/acts-as-messageable)
8
+
9
+ Usage
10
+ =====
11
+
12
+ To use it, add it to your Gemfile:
13
+
14
+ ```ruby
15
+ gem 'acts-as-messageable'
16
+ ```
17
+
18
+ Post instalation
19
+ ================
20
+
21
+ ```
22
+ rails g acts-as-messageable:migration table_name # default 'messages'
23
+ rake db:migrate
24
+ ```
25
+
26
+ Usage
27
+ =====
28
+
29
+ ```ruby
30
+ class User < ActiveRecord::Base
31
+ acts_as_messageable :table_name => "table_with_messages", # default 'messages'
32
+ :required => :body # default [:topic, :body]
33
+ :class_name => "CustomMessages" # default "ActsAsMessageable::Message"
34
+ end
35
+ ```
36
+
37
+ Upgrade
38
+ =======
39
+
40
+ Just type once again
41
+
42
+ ```
43
+ rails g acts-as-messageable:migration
44
+ ```
45
+
46
+ And new migrations should be created.
47
+
48
+ ```
49
+ ~$ rails g acts-as-messageable:migration
50
+ create db/migrate/20110811223435_add_recipient_permanent_delete_and_sender_permanent_delete_to_messages.rb
51
+ ```
52
+
53
+ Send message
54
+ ============
55
+
56
+ ```ruby
57
+ @alice = User.first
58
+ @bob = User.last
59
+
60
+ @alice.send_message(@bob, "Message topic", "Hi bob!")
61
+ @bob.send_message(@alice, "Re: Message topic", "Hi alice!")
62
+ ```
63
+
64
+ With hash
65
+ =========
66
+
67
+ ```ruby
68
+ @alice.send_message(@bob, { :body => "Hash body", :topic => "Hash topic" })
69
+ ```
70
+
71
+ Custom required
72
+ ===============
73
+
74
+ In User model
75
+
76
+ ```ruby
77
+ class User < ActiveRecord::Base
78
+ acts_as_messageable :required => :body
79
+ end
80
+
81
+ @alice.send_message(@bob, { :body => "Hash body" })
82
+ ```
83
+
84
+ or
85
+
86
+ ```ruby
87
+ @alice.send_message(@bob, "body")
88
+ ```
89
+
90
+ Required sequence
91
+ =================
92
+
93
+ ```ruby
94
+ class User < ActiveRecord::Base
95
+ acts_as_messageable :required => [:body, :topic]
96
+ end
97
+
98
+ @alice.send_message(@bob, "body", "topic")
99
+ ```
100
+
101
+ Conversation
102
+ ============
103
+
104
+ ```ruby
105
+ @message = @alice.send_message(@bob, "Hello bob!", "How are you?")
106
+ @reply_message = @bob.reply_to(@message, "Re: Hello bob!", "I'm fine!")
107
+ # or @bob.reply_to(@message, :topic => "Re: Hello bob!", :body => "I'm fine!")
108
+
109
+ @message.conversation #=> [@message, @reply_message]
110
+ @reply_message.conversation #=> [@message, @reply_message]
111
+ ```
112
+
113
+ Search
114
+ ===
115
+
116
+ ```ruby
117
+ @alice.messages # all messages connected with @alice (inbox/outbox)
118
+ @alice.received_messages # @alice inbox
119
+ @alice.sent_messages # @alice outbox
120
+
121
+ @alice.deleted_messages # all messages connected with @alice (trash)
122
+
123
+ @alice.messages.are_from(@bob) # all message form @bob
124
+ @alice.messages.are_to(@bob) # all message to @bob
125
+ @alice.messages.with_id(@id_of_message) # message with id id_of_message
126
+ @alice.messages.readed # all readed @alice messages
127
+ @alice.messages.unread # all unreaded @alice messages
128
+
129
+ @alice.received_messages.are_from(@bob) # all messages from bob (inbox)
130
+ @alice.sent_messages.are_to(@bob) # all messages do bob (outbox)
131
+ ```
132
+
133
+ You can use multiple filters at the same time
134
+
135
+ ```ruby
136
+ @alice.messages.are_from(@bob).are_to(@alice).readed # all message from @bob to @alice and readed
137
+ @alice.deleted_messages.are_from(@bob) # all deleted messages from @bob
138
+ ```
139
+
140
+ Delete message
141
+ ==============
142
+
143
+ ```ruby
144
+ @message = @alice.send_message(@bob, "Topic", "Body")
145
+
146
+ @alice.messages.process do |message|
147
+ message.delete
148
+ end
149
+ ```
150
+
151
+ Now we can find message in trash
152
+
153
+ ```ruby
154
+ @alice.deleted_messages #=> [@message]
155
+
156
+ @alice.deleted_messages.process do |message|
157
+ message.delete
158
+ end
159
+
160
+ @alice.delete_message #=> []
161
+ ```
162
+
163
+ Message was permanent delete
164
+
165
+ Copyright © 2011 Piotr Niełacny (http://ruby-blog.pl), released under the MIT license
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.4.1
@@ -4,22 +4,22 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{acts-as-messageable}
8
- s.version = "0.4.0"
7
+ s.name = "acts-as-messageable"
8
+ s.version = "0.4.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Piotr Nielacny}]
12
- s.date = %q{2011-08-11}
13
- s.email = %q{piotr.nielacny@gmail.com}
11
+ s.authors = ["Piotr Nielacny"]
12
+ s.date = "2011-11-16"
13
+ s.email = "piotr.nielacny@gmail.com"
14
14
  s.extra_rdoc_files = [
15
- "README.rdoc"
15
+ "README.md"
16
16
  ]
17
17
  s.files = [
18
18
  ".rspec",
19
19
  ".travis.yml",
20
20
  "Gemfile",
21
21
  "MIT-LICENSE",
22
- "README.rdoc",
22
+ "README.md",
23
23
  "Rakefile",
24
24
  "VERSION",
25
25
  "acts-as-messageable.gemspec",
@@ -37,10 +37,10 @@ Gem::Specification.new do |s|
37
37
  "spec/spec_helper.rb",
38
38
  "spec/support/user.rb"
39
39
  ]
40
- s.homepage = %q{http://github.com/LTe/acts-as-messageable}
41
- s.require_paths = [%q{lib}]
42
- s.rubygems_version = %q{1.8.6}
43
- s.summary = %q{Make user messageable!;-)}
40
+ s.homepage = "http://github.com/LTe/acts-as-messageable"
41
+ s.require_paths = ["lib"]
42
+ s.rubygems_version = "1.8.10"
43
+ s.summary = "Make user messageable!;-)"
44
44
 
45
45
  if s.respond_to? :specification_version then
46
46
  s.specification_version = 3
@@ -50,7 +50,6 @@ Gem::Specification.new do |s|
50
50
  s.add_runtime_dependency(%q<activesupport>, [">= 3.0.0"])
51
51
  s.add_runtime_dependency(%q<ancestry>, ["~> 1.2.4"])
52
52
  s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
53
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
54
53
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.0"])
55
54
  s.add_development_dependency(%q<sqlite3-ruby>, [">= 0"])
56
55
  else
@@ -58,7 +57,6 @@ Gem::Specification.new do |s|
58
57
  s.add_dependency(%q<activesupport>, [">= 3.0.0"])
59
58
  s.add_dependency(%q<ancestry>, ["~> 1.2.4"])
60
59
  s.add_dependency(%q<rspec>, ["~> 2.6.0"])
61
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
62
60
  s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
63
61
  s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
64
62
  end
@@ -67,7 +65,6 @@ Gem::Specification.new do |s|
67
65
  s.add_dependency(%q<activesupport>, [">= 3.0.0"])
68
66
  s.add_dependency(%q<ancestry>, ["~> 1.2.4"])
69
67
  s.add_dependency(%q<rspec>, ["~> 2.6.0"])
70
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
71
68
  s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
72
69
  s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
73
70
  end
@@ -11,13 +11,12 @@ module ActsAsMessageable
11
11
  argument :table_name, :type => :string, :default => "messages"
12
12
 
13
13
  def self.next_migration_number(dirname)
14
- ActiveRecord::Generators::Base.next_migration_number(dirname)
14
+ ActiveRecord::Generators::Base.next_migration_number(dirname)
15
15
  end
16
16
 
17
17
  def create_migration_file
18
- migration_template 'migration_permanent.rb', 'db/migrate/add_recipient_permanent_delete_and_sender_permanent_delete_to_messages.rb'
19
- migration_template 'migration.rb', 'db/migrate/create_messages_table.rb'
18
+ migration_template 'migration.rb', 'db/migrate/create_messages_table.rb' rescue nil
19
+ migration_template 'migration_permanent.rb', 'db/migrate/add_recipient_permanent_delete_and_sender_permanent_delete_to_messages.rb' rescue nil
20
20
  end
21
-
22
21
  end
23
22
  end
@@ -4,140 +4,160 @@ class User < ActiveRecord::Base
4
4
  acts_as_messageable
5
5
  end
6
6
 
7
+ def send_message(from=@bob, to=@alice, topic="Topic", body="Body")
8
+ from.send_message(to, topic, body)
9
+ end
10
+
7
11
  describe "ActsAsMessageable" do
8
12
 
9
13
  before(:all) do
10
14
  User.acts_as_messageable
11
15
  end
12
16
 
13
- it "should be two users in database" do
14
- User.count.should == 2
17
+ describe "prepare for specs" do
18
+ it "should be two users in database" do
19
+ User.count.should == 2
20
+ end
15
21
  end
16
22
 
17
- it "alice should have one message from bob" do
18
- @bob.send_message(@alice, "Topic", "Message body")
19
- @alice.messages.count.should == 1
20
- @alice.messages.are_from(@bob).count.should == 1
21
- end
23
+ describe "send messages" do
24
+ it "alice should have one message" do
25
+ send_message
26
+ @alice.messages.count.should == 1
27
+ end
22
28
 
23
- it "bob should have one message to alice in outbox" do
24
- @bob.send_message(@alice, "Topic", "Message body")
25
- @bob.messages.count.should == 1
26
- @bob.messages.are_to(@alice).count.should == 1
27
- end
29
+ it "alice should have one message from bob" do
30
+ send_message
31
+ @alice.messages.are_from(@bob).count.should == 1
32
+ end
33
+
34
+ it "bob should have one message" do
35
+ send_message
36
+ @bob.messages.count.should == 1
37
+ end
28
38
 
29
- it "bob should have one open message from alice" do
30
- @message = @alice.send_message(@bob, "Topic", "Message body")
31
- @bob.messages.are_from(@alice).process do |m|
32
- m.open
39
+ it "bob should have one message to alice in outbox" do
40
+ send_message
41
+ @bob.sent_messages.are_to(@alice).count.should == 1
33
42
  end
34
43
 
35
- @bob.messages.readed.count.should == 1
44
+ it "bob should have one open message from alice" do
45
+ send_message
46
+ @alice.messages.are_from(@bob).process { |m| m.open }
47
+ @alice.messages.readed.count.should == 1
48
+ end
36
49
  end
37
50
 
38
- it "bob should have one deleted message from alice" do
39
- @alice.send_message(@bob, "Topic", "Message body")
40
- @bob.messages.process do |m|
41
- m.delete
51
+ describe "delete messages" do
52
+ it "bob should have one deleted message from alice" do
53
+ send_message
54
+ @bob.messages.process do |m|
55
+ m.delete
56
+ end
57
+
58
+ @bob.messages.each do |m|
59
+ m.recipient_delete.should == true
60
+ m.sender_delete.should == false
61
+ end
62
+
63
+ @bob.deleted_messages.count.should == 1
64
+ @bob.messages.count.should == 0
42
65
  end
43
66
 
44
- @bob.messages.each do |m|
45
- m.recipient_delete.should == true
46
- m.sender_delete.should == false
67
+ it "received_messages and sent_messages should work with .process method" do
68
+ @message = send_message
69
+
70
+ @bob.sent_messages.count.should == 1
71
+ @alice.received_messages.count.should == 1
72
+
73
+ @bob.sent_messages.process { |m| m.delete }
74
+ @bob.sent_messages.count.should == 0
75
+ @alice.received_messages.count.should == 1
76
+
77
+ @alice.received_messages.process { |m| m.delete }
78
+ @alice.received_messages.count.should == 0
47
79
  end
48
80
 
49
- @bob.deleted_messages.count.should == 1
50
- @bob.messages.count.should == 0
81
+ it "message should permanent delete" do
82
+ @message = send_message
83
+ @alice.messages.process { |m| m.delete }
84
+ @alice.messages.count.should == 0
85
+
86
+ @alice.deleted_messages.count.should == 1
87
+ @alice.deleted_messages.process { |m| m.delete }
88
+ @alice.deleted_messages.count.should == 0
89
+
90
+ @message.reload
91
+ @message.recipient_permanent_delete.should == true
92
+
93
+ @bob.sent_messages.count.should == 1
94
+ end
51
95
  end
52
96
 
53
- it "alice should have one unread message from bob" do
54
- @bob.send_message(@alice, "Topic", "Message body")
55
- @alice.messages.are_from(@bob).unread.count.should == 1
56
- @alice.messages.are_from(@bob).readed.count.should == 0
97
+ describe "read/unread feature" do
98
+ it "alice should have one unread message from bob" do
99
+ send_message
100
+ @alice.messages.are_from(@bob).unread.count.should == 1
101
+ @alice.messages.are_from(@bob).readed.count.should == 0
102
+ end
57
103
  end
58
104
 
59
105
  it "should be in database message with id ..." do
60
- message_id = @bob.send_message(@alice, "Topic", "Message body").id
106
+ message_id = send_message.id
61
107
  @bob.messages.with_id(message_id).count.should == 1
62
108
  end
63
109
 
64
110
  it "message should have proper topic" do
65
- @bob.send_message(@alice, "Topic", "Message body")
111
+ send_message
66
112
  @bob.messages.count.should == 1
67
113
  @bob.messages.first.topic == "Topic"
68
- @bob.messages.first.body == "Message body"
69
114
  end
70
115
 
71
- it "bob send message to alice, and alice reply to bob message and show proper tree" do
72
- @message = @bob.send_message(@alice, "Topic", "Body")
73
- @reply_message = @alice.reply_to(@message, "Re: Topic", "Body")
74
-
75
- @reply_message.conversation.size.should == 2
76
- @reply_message.conversation.first.topic.should == "Topic"
77
- @reply_message.conversation.last.topic.should == "Re: Topic"
78
- end
116
+ describe "conversation" do
117
+ it "bob send message to alice, and alice reply to bob message and show proper tree" do
118
+ @message = send_message
119
+ @reply_message = @alice.reply_to(@message, "Re: Topic", "Body")
79
120
 
80
- it "bob send message to alice, alice answer, and bob answer for alice answer" do
81
- @message = @bob.send_message(@alice, "Topic", "Body")
82
- @reply_message = @alice.reply_to(@message, "Re: Topic", "Body")
83
- @reply_reply_message = @bob.reply_to(@reply_message, "Re: Re: Topic", "Body")
84
-
85
- [@message, @reply_message, @reply_reply_message].each do |m|
86
- m.conversation.size.should == 3
121
+ @reply_message.conversation.size.should == 2
122
+ @reply_message.conversation.first.topic.should == "Topic"
123
+ @reply_message.conversation.last.topic.should == "Re: Topic"
87
124
  end
88
125
 
89
- @message.conversation.last.should == @reply_reply_message
90
- @reply_reply_message.conversation.last.should == @reply_reply_message
91
- end
126
+ it "bob send message to alice, alice answer, and bob answer for alice answer" do
127
+ @message = send_message
128
+ @reply_message = @alice.reply_to(@message, "Re: Topic", "Body")
129
+ @reply_reply_message = @bob.reply_to(@reply_message, "Re: Re: Topic", "Body")
92
130
 
93
- it "send message with hash" do
94
- @message = @bob.send_message(@alice, {:body => "Body", :topic => "Topic"})
95
- @message.topic.should == "Topic"
96
- @message.body.should == "Body"
97
- end
131
+ [@message, @reply_message, @reply_reply_message].each do |m|
132
+ m.conversation.size.should == 3
133
+ end
98
134
 
99
- it "messages should return in right order :created_at" do
100
- @message = @bob.send_message(@alice, "Topic", "First message")
101
- @message = @bob.send_message(@alice, "Topic", "Sec message")
102
- @alice.messages.first.body.should == "First message"
135
+ @message.conversation.last.should == @reply_reply_message
136
+ @reply_reply_message.conversation.last.should == @reply_reply_message
137
+ end
103
138
  end
104
139
 
105
- it "message should permanent delete" do
106
- @message = @bob.send_message(@alice, "Topic", "Message")
107
- @alice.messages.process { |m| m.delete }
108
- @alice.messages.count.should == 0
109
-
110
- @alice.deleted_messages.count.should == 1
111
- @alice.deleted_messages.process { |m| m.delete }
112
- @alice.deleted_messages.count.should == 0
113
-
114
- @message.reload
115
- @message.recipient_permanent_delete.should == true
140
+ describe "send messages with hash" do
141
+ it "send message with hash" do
142
+ @message = @bob.send_message(@alice, {:body => "Body", :topic => "Topic"})
143
+ @message.topic.should == "Topic"
144
+ @message.body.should == "Body"
145
+ end
146
+ end
116
147
 
117
- @bob.sent_messages.count.should == 1
148
+ it "messages should return in right order :created_at" do
149
+ @message = send_message
150
+ @message = send_message(@bob, @alice, "Example", "Example Body")
151
+ @alice.messages.first.body.should == "Body"
118
152
  end
119
153
 
120
154
  it "received_messages should return ActiveRecord::Relation" do
121
- @message = @bob.send_message(@alice, "Topic", "Message")
155
+ send_message
122
156
  @alice.received_messages.class.should == ActiveRecord::Relation
123
157
  end
124
158
 
125
159
  it "sent_messages should return ActiveRecord::Relation" do
126
- @message = @bob.send_message(@alice, "Topic", "Message")
160
+ send_message
127
161
  @bob.sent_messages.class.should == ActiveRecord::Relation
128
162
  end
129
-
130
- it "received_messages and sent_messages should work with .process method" do
131
- @message = @bob.send_message(@alice, "Helou", "Alice")
132
-
133
- @bob.sent_messages.count.should == 1
134
- @alice.received_messages.count.should == 1
135
-
136
- @bob.sent_messages.process { |m| m.delete }
137
- @bob.sent_messages.count.should == 0
138
- @alice.received_messages.count.should == 1
139
-
140
- @alice.received_messages.process { |m| m.delete }
141
- @alice.received_messages.count.should == 0
142
- end
143
163
  end
metadata CHANGED
@@ -1,146 +1,94 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: acts-as-messageable
3
- version: !ruby/object:Gem::Version
4
- hash: 15
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.1
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 4
9
- - 0
10
- version: 0.4.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Piotr Nielacny
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-08-11 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- type: :runtime
22
- requirement: &id001 !ruby/object:Gem::Requirement
12
+ date: 2011-11-16 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activerecord
16
+ requirement: &69822268751920 !ruby/object:Gem::Requirement
23
17
  none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- hash: 7
28
- segments:
29
- - 3
30
- - 0
31
- - 0
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
32
21
  version: 3.0.0
33
- version_requirements: *id001
34
- name: activerecord
35
- prerelease: false
36
- - !ruby/object:Gem::Dependency
37
22
  type: :runtime
38
- requirement: &id002 !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ version_requirements: *69822268751920
25
+ - !ruby/object:Gem::Dependency
26
+ name: activesupport
27
+ requirement: &69822268749940 !ruby/object:Gem::Requirement
39
28
  none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 7
44
- segments:
45
- - 3
46
- - 0
47
- - 0
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
48
32
  version: 3.0.0
49
- version_requirements: *id002
50
- name: activesupport
51
- prerelease: false
52
- - !ruby/object:Gem::Dependency
53
33
  type: :runtime
54
- requirement: &id003 !ruby/object:Gem::Requirement
34
+ prerelease: false
35
+ version_requirements: *69822268749940
36
+ - !ruby/object:Gem::Dependency
37
+ name: ancestry
38
+ requirement: &69822268747920 !ruby/object:Gem::Requirement
55
39
  none: false
56
- requirements:
40
+ requirements:
57
41
  - - ~>
58
- - !ruby/object:Gem::Version
59
- hash: 23
60
- segments:
61
- - 1
62
- - 2
63
- - 4
42
+ - !ruby/object:Gem::Version
64
43
  version: 1.2.4
65
- version_requirements: *id003
66
- name: ancestry
44
+ type: :runtime
67
45
  prerelease: false
68
- - !ruby/object:Gem::Dependency
69
- type: :development
70
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *69822268747920
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: &69822268746840 !ruby/object:Gem::Requirement
71
50
  none: false
72
- requirements:
51
+ requirements:
73
52
  - - ~>
74
- - !ruby/object:Gem::Version
75
- hash: 23
76
- segments:
77
- - 2
78
- - 6
79
- - 0
53
+ - !ruby/object:Gem::Version
80
54
  version: 2.6.0
81
- version_requirements: *id004
82
- name: rspec
83
- prerelease: false
84
- - !ruby/object:Gem::Dependency
85
55
  type: :development
86
- requirement: &id005 !ruby/object:Gem::Requirement
87
- none: false
88
- requirements:
89
- - - ~>
90
- - !ruby/object:Gem::Version
91
- hash: 23
92
- segments:
93
- - 1
94
- - 0
95
- - 0
96
- version: 1.0.0
97
- version_requirements: *id005
98
- name: bundler
99
56
  prerelease: false
100
- - !ruby/object:Gem::Dependency
101
- type: :development
102
- requirement: &id006 !ruby/object:Gem::Requirement
57
+ version_requirements: *69822268746840
58
+ - !ruby/object:Gem::Dependency
59
+ name: jeweler
60
+ requirement: &69822268745520 !ruby/object:Gem::Requirement
103
61
  none: false
104
- requirements:
62
+ requirements:
105
63
  - - ~>
106
- - !ruby/object:Gem::Version
107
- hash: 15
108
- segments:
109
- - 1
110
- - 6
111
- - 0
64
+ - !ruby/object:Gem::Version
112
65
  version: 1.6.0
113
- version_requirements: *id006
114
- name: jeweler
115
- prerelease: false
116
- - !ruby/object:Gem::Dependency
117
66
  type: :development
118
- requirement: &id007 !ruby/object:Gem::Requirement
119
- none: false
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- hash: 3
124
- segments:
125
- - 0
126
- version: "0"
127
- version_requirements: *id007
67
+ prerelease: false
68
+ version_requirements: *69822268745520
69
+ - !ruby/object:Gem::Dependency
128
70
  name: sqlite3-ruby
71
+ requirement: &69822268743820 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
129
78
  prerelease: false
79
+ version_requirements: *69822268743820
130
80
  description:
131
81
  email: piotr.nielacny@gmail.com
132
82
  executables: []
133
-
134
83
  extensions: []
135
-
136
- extra_rdoc_files:
137
- - README.rdoc
138
- files:
84
+ extra_rdoc_files:
85
+ - README.md
86
+ files:
139
87
  - .rspec
140
88
  - .travis.yml
141
89
  - Gemfile
142
90
  - MIT-LICENSE
143
- - README.rdoc
91
+ - README.md
144
92
  - Rakefile
145
93
  - VERSION
146
94
  - acts-as-messageable.gemspec
@@ -159,36 +107,29 @@ files:
159
107
  - spec/support/user.rb
160
108
  homepage: http://github.com/LTe/acts-as-messageable
161
109
  licenses: []
162
-
163
110
  post_install_message:
164
111
  rdoc_options: []
165
-
166
- require_paths:
112
+ require_paths:
167
113
  - lib
168
- required_ruby_version: !ruby/object:Gem::Requirement
114
+ required_ruby_version: !ruby/object:Gem::Requirement
169
115
  none: false
170
- requirements:
171
- - - ">="
172
- - !ruby/object:Gem::Version
173
- hash: 3
174
- segments:
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ segments:
175
121
  - 0
176
- version: "0"
177
- required_rubygems_version: !ruby/object:Gem::Requirement
122
+ hash: -3869198984656405401
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
178
124
  none: false
179
- requirements:
180
- - - ">="
181
- - !ruby/object:Gem::Version
182
- hash: 3
183
- segments:
184
- - 0
185
- version: "0"
125
+ requirements:
126
+ - - ! '>='
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
186
129
  requirements: []
187
-
188
130
  rubyforge_project:
189
- rubygems_version: 1.8.6
131
+ rubygems_version: 1.8.10
190
132
  signing_key:
191
133
  specification_version: 3
192
134
  summary: Make user messageable!;-)
193
135
  test_files: []
194
-
data/README.rdoc DELETED
@@ -1,118 +0,0 @@
1
-
2
- = ActsAsMessageable
3
- The Acts As Messageable allows communication between the models.
4
-
5
- http://travis-ci.org/LTe/acts-as-messageable.png
6
-
7
-
8
- == Usage
9
- To use it, add it to your Gemfile:
10
-
11
- gem 'acts-as-messageable'
12
-
13
- == Post instalation
14
-
15
- rails g acts-as-messageable:migration table_name # default 'messages'
16
- rake db:migrate
17
-
18
- == Usage
19
-
20
- class User < ActiveRecord::Base
21
- acts_as_messageable :table_name => "table_with_messages", # default 'messages'
22
- :required => :body # default [:topic, :body]
23
- :class_name => "CustomMessages" # default "ActsAsMessageable::Message"
24
- end
25
-
26
- == Upgrade
27
- Just type once again
28
-
29
- rails g acts-as-messageable:migration
30
-
31
- And new migrations should be created.
32
-
33
- ~$ rails g acts-as-messageable:migration
34
- create db/migrate/20110811223435_add_recipient_permanent_delete_and_sender_permanent_delete_to_messages.rb
35
- Another migration is already named create_messages_table: /home/lite/work/acts_test/db/migrate/20110811184810_create_messages_table.rb
36
-
37
- == Send message
38
-
39
- @alice = User.first
40
- @bob = User.last
41
-
42
- @alice.send_message(@bob, "Message topic", "Hi bob!")
43
- @bob.send_message(@alice, "Re: Message topic", "Hi alice!")
44
-
45
- === With hash
46
-
47
- @alice.send_message(@bob, { :body => "Hash body", :topic => "Hash topic" })
48
-
49
- === Custom required
50
-
51
- In User model
52
- class User < ActiveRecord::Base
53
- acts_as_messageable :required => :body
54
- end
55
-
56
- @alice.send_message(@bob, { :body => "Hash body" })
57
- or
58
- @alice.send_message(@bob, "body")
59
-
60
- ==== Required sequence
61
-
62
-
63
- class User < ActiveRecord::Base
64
- acts_as_messageable :required => [:body, :topic]
65
- end
66
-
67
- @alice.send_message(@bob, "body", "topic")
68
-
69
- == Conversation
70
- @message = @alice.send_message(@bob, "Hello bob!", "How are you?")
71
- @reply_message = @bob.reply_to(@message, "Re: Hello bob!", "I'm fine!")
72
- # or @bob.reply_to(@message, :topic => "Re: Hello bob!", :body => "I'm fine!")
73
-
74
- @message.conversation #=> [@message, @reply_message]
75
- @reply_message.conversation #=> [@message, @reply_message]
76
-
77
- == API
78
- @alice.messages # all messages connected with @alice (inbox/outbox)
79
- @alice.received_messages # @alice inbox
80
- @alice.sent_messages # @alice outbox
81
-
82
- @alice.deleted_messages # all messages connected with @alice (trash)
83
-
84
- @alice.messages.are_from(@bob) # all message form @bob
85
- @alice.messages.are_to(@bob) # all message to @bob
86
- @alice.messages.with_id(@id_of_message) # message with id id_of_message
87
- @alice.messages.readed # all readed @alice messages
88
- @alice.messages.unread # all unreaded @alice messages
89
-
90
- @alice.received_messages.are_from(@bob) # all messages from bob (inbox)
91
- @alice.sent_messages.are_to(@bob) # all messages do bob (outbox)
92
-
93
- You can use multiple filters at the same time
94
-
95
- @alice.messages.are_from(@bob).are_to(@alice).readed # all message from @bob to @alice and readed
96
- @alice.deleted_messages.are_from(@bob) # all deleted messages from @bob
97
-
98
- === Delete message
99
-
100
- @message = @alice.send_message(@bob, "Topic", "Body")
101
-
102
- @alice.messages.process do |message|
103
- message.delete
104
- end
105
-
106
- Now we can find message in trash
107
-
108
- @alice.deleted_messages #=> [@message]
109
-
110
- @alice.deleted_messages.process do |message|
111
- message.delete
112
- end
113
-
114
- @alice.delete_message #=> []
115
-
116
- Message was permanent delete
117
-
118
- Copyright © 2011 Piotr Niełacny (http://ruby-blog.pl), released under the MIT license