mailboxer 0.0.13 → 0.0.14

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.
@@ -1,13 +1,11 @@
1
1
  class Conversation < ActiveRecord::Base
2
2
  attr_reader :originator, :original_message, :last_sender, :last_message
3
- attr_accessor :recipients, :body
4
3
  has_many :messages
5
4
  has_many :receipts, :through => :messages
6
5
 
7
- validates_presence_of :recipients, :subject, :body
6
+ validates_presence_of :subject
8
7
 
9
- before_create :clean
10
- after_create :clear_recipients
8
+ before_validation :clean
11
9
 
12
10
  # before_create :clean
13
11
  scope :participant, lambda {|participant|
@@ -52,12 +50,12 @@ class Conversation < ActiveRecord::Base
52
50
  end
53
51
 
54
52
  def recipients
55
- if @recipients.blank? and self.last_message
53
+ if self.last_message
56
54
  recps = self.last_message.recipients
57
55
  recps = recps.is_a?(Array) ? recps : [recps]
58
- return recps
56
+ return recps
59
57
  end
60
- return @recipients
58
+ return []
61
59
  end
62
60
 
63
61
  #originator of the conversation.
@@ -129,8 +127,4 @@ class Conversation < ActiveRecord::Base
129
127
  self.subject = sanitize self.subject
130
128
  end
131
129
 
132
- def clear_recipients
133
- self.recipients=nil
134
- end
135
-
136
130
  end
@@ -1,88 +1,64 @@
1
1
  class Mailbox
2
- attr_accessor :type
3
- attr_reader :messageable
4
-
5
- def initialize(recipient, box = :all)
6
- @messageable = recipient
7
- @type = box
8
- end
9
- #sets the mailbox type to the symbol corresponding to the given val.
10
- def type=(val)
11
- @type = val.to_sym
12
- end
13
-
14
- def conversations(options = {})
15
- conv = Conversation.participant(@messageable)
16
-
17
- if options[:mailbox_type].present?
18
- case options[:mailbox_type]
19
- when 'inbox'
20
- conv = Conversation.inbox(@messageable)
21
- when 'sentbox'
22
- conv = Conversation.sentbox(@messageable)
23
- when 'trash'
24
- conv = Conversation.trash(@messageable)
25
- end
26
- end
27
-
28
- if (options[:read].present? and options[:read]==false) or (options[:unread].present? and options[:unread]==true)
29
- conv = conv.unread(@messageable)
30
- end
31
-
32
- return conv.uniq
33
- end
34
-
35
- def inbox(options={})
36
- options = options.merge(:mailbox_type => 'inbox')
37
- return self.conversations(options)
38
- end
39
-
40
- def sentbox(options={})
41
- options = options.merge(:mailbox_type => 'sentbox')
42
- return self.conversations(options)
43
- end
44
-
45
- def trash(options={})
46
- options = options.merge(:mailbox_type => 'trash')
47
- return self.conversations(options)
48
- end
49
-
50
- def receipts(options = {})
51
- return Receipt.where(options).receiver(@messageable)
52
- end
53
-
54
- def [](mailbox_type)
55
- self.type = mailbox_type
56
- return self
57
- end
58
-
59
- def <<(msg)
60
- return self.add(msg)
61
- end
62
-
63
- def add(msg)
64
- msg_receipt = Receipt.new
65
- msg_receipt.message = msg
66
- msg_receipt.read = (msg.sender.id == @messageable.id && msg.sender.class == @messageable.class)
67
- msg_receipt.receiver = @messageable
68
- msg_receipt.mailbox_type = @type.to_s unless @type == :all
69
- @messageable.receipts << msg_receipt
70
- return msg_receipt
71
- end
72
-
73
- def empty_trash(options = {})
74
- return false
75
- end
76
-
77
- def has_conversation?(conversation)
78
- return conversation.is_participant?(@messageable)
79
- end
80
-
81
- def is_trashed?(conversation)
82
- return conversation.is_trashed?(@messageable)
83
- end
84
- def is_completely_trashed?(conversation)
85
- return conversation.is_completely_trashed?(@messageable)
86
- end
87
-
2
+ attr_accessor :type
3
+ attr_reader :messageable
4
+ def initialize(recipient, box = :all)
5
+ @messageable = recipient
6
+ end
7
+
8
+ def conversations(options = {})
9
+ conv = Conversation.participant(@messageable)
10
+
11
+ if options[:mailbox_type].present?
12
+ case options[:mailbox_type]
13
+ when 'inbox'
14
+ conv = Conversation.inbox(@messageable)
15
+ when 'sentbox'
16
+ conv = Conversation.sentbox(@messageable)
17
+ when 'trash'
18
+ conv = Conversation.trash(@messageable)
19
+ end
20
+ end
21
+
22
+ if (options[:read].present? and options[:read]==false) or (options[:unread].present? and options[:unread]==true)
23
+ conv = conv.unread(@messageable)
24
+ end
25
+
26
+ return conv.uniq
27
+ end
28
+
29
+ def inbox(options={})
30
+ options = options.merge(:mailbox_type => 'inbox')
31
+ return self.conversations(options)
32
+ end
33
+
34
+ def sentbox(options={})
35
+ options = options.merge(:mailbox_type => 'sentbox')
36
+ return self.conversations(options)
37
+ end
38
+
39
+ def trash(options={})
40
+ options = options.merge(:mailbox_type => 'trash')
41
+ return self.conversations(options)
42
+ end
43
+
44
+ def receipts(options = {})
45
+ return Receipt.where(options).receiver(@messageable)
46
+ end
47
+
48
+ def empty_trash(options = {})
49
+ return false
50
+ end
51
+
52
+ def has_conversation?(conversation)
53
+ return conversation.is_participant?(@messageable)
54
+ end
55
+
56
+ def is_trashed?(conversation)
57
+ return conversation.is_trashed?(@messageable)
58
+ end
59
+
60
+ def is_completely_trashed?(conversation)
61
+ return conversation.is_completely_trashed?(@messageable)
62
+ end
63
+
88
64
  end
@@ -1,13 +1,12 @@
1
1
  class Message < ActiveRecord::Base
2
- #any additional info that needs to be sent in a message (ex. I use these to determine request types)
3
- serialize :headers
4
-
2
+ #
5
3
  attr_accessor :recipients
4
+ belongs_to :sender, :polymorphic => :true
5
+ belongs_to :conversation, :validate => true, :autosave => true
6
+ validates_presence_of :subject, :body, :sender
6
7
 
7
8
  class_inheritable_accessor :on_deliver_callback
8
9
  protected :on_deliver_callback
9
- belongs_to :sender, :polymorphic => :true
10
- belongs_to :conversation
11
10
  has_many :receipts
12
11
  scope :conversation, lambda { |conversation|
13
12
  where(:conversation_id => conversation.id)
@@ -19,14 +18,36 @@ class Message < ActiveRecord::Base
19
18
  end
20
19
  end
21
20
 
22
- def deliver(mailbox_type, should_clean = true)
21
+ def deliver(reply = false, should_clean = true)
23
22
  self.clean if should_clean
24
- self.save
23
+ temp_receipts = Array.new
24
+ #Receiver receipts
25
25
  self.recipients.each do |r|
26
- r.mailbox[mailbox_type] << self
26
+ msg_receipt = Receipt.new
27
+ msg_receipt.message = self
28
+ msg_receipt.read = false
29
+ msg_receipt.receiver = r
30
+ msg_receipt.mailbox_type = "inbox"
31
+ temp_receipts << msg_receipt
27
32
  end
28
- self.recipients=nil
29
- self.on_deliver_callback.call(self, mailbox_type) unless self.on_deliver_callback.nil?
33
+ #Sender receipt
34
+ sender_receipt = Receipt.new
35
+ sender_receipt.message = self
36
+ sender_receipt.read = true
37
+ sender_receipt.receiver = self.sender
38
+ sender_receipt.mailbox_type = "sentbox"
39
+ temp_receipts << sender_receipt
40
+
41
+ temp_receipts.each(&:valid?)
42
+ if temp_receipts.all? { |t| t.errors.empty? }
43
+ temp_receipts.each(&:save!) #Save receipts
44
+ if reply
45
+ self.conversation.update_attribute(:updated_at, Time.now)
46
+ end
47
+ self.recipients=nil
48
+ self.on_deliver_callback.call(self) unless self.on_deliver_callback.nil?
49
+ end
50
+ return sender_receipt
30
51
  end
31
52
 
32
53
  def recipients
@@ -1,71 +1,85 @@
1
1
  class Receipt < ActiveRecord::Base
2
- belongs_to :message
3
- has_one :conversation, :through => :message
4
- belongs_to :receiver, :polymorphic => :true
5
- scope :receiver, lambda { |receiver|
2
+ belongs_to :message, :validate => true, :autosave => true
3
+ has_one :conversation, :through => :message
4
+ belongs_to :receiver, :polymorphic => :true
5
+
6
+ validates_presence_of :receiver
7
+
8
+ scope :receiver, lambda { |receiver|
6
9
  where(:receiver_id => receiver.id,:receiver_type => receiver.class.to_s)
7
10
  }
8
- scope :message, lambda { |message|
11
+ scope :message, lambda { |message|
9
12
  where(:message_id => message.id)
10
13
  }
11
- scope :conversation, lambda { |conversation|
14
+ scope :conversation, lambda { |conversation|
12
15
  joins(:message).where('messages.conversation_id' => conversation.id)
13
16
  }
14
- scope :sentbox, where(:mailbox_type => "sentbox")
15
- scope :inbox, where(:mailbox_type => "inbox")
16
- scope :trash, where(:trashed => true)
17
- scope :not_trash, where(:trashed => false)
18
- scope :read, where(:read => true)
19
- scope :unread, where(:read => false)
20
-
21
- class << self
22
- def mark_as_read(options={})
23
- where(options).update_all(:read => true)
24
- end
25
-
26
- def mark_as_unread(options={})
27
- where(options).update_all(:read => false)
28
- end
29
-
30
- def move_to_trash(options={})
31
- where(options).update_all(:trashed => true)
32
- end
33
-
34
- def untrash(options={})
35
- where(options).update_all(:trashed => false)
36
- end
37
-
38
- def move_to_inbox(options={})
39
- where(options).update_all(:mailbox_type => :inbox, :trashed => false)
40
- end
41
-
42
- def move_to_sentbox(options={})
43
- where(options).update_all(:mailbox_type => :sentbox, :trashed => false)
44
- end
45
- end
46
-
47
- def mark_as_read
48
- update_attributes(:read => true)
49
- end
50
-
51
- def mark_as_unread
52
- update_attributes(:read => false)
53
- end
54
-
55
- def move_to_trash
56
- update_attributes(:trashed => true)
57
- end
58
-
59
- def untrash
60
- update_attributes(:trashed => false)
61
- end
62
-
63
- def move_to_inbox
64
- update_attributes(:mailbox_type => :inbox, :trashed => false)
65
- end
66
-
67
- def move_to_sentbox
68
- update_attributes(:mailbox_type => :sentbox, :trashed => false)
69
- end
17
+ scope :sentbox, where(:mailbox_type => "sentbox")
18
+ scope :inbox, where(:mailbox_type => "inbox")
19
+ scope :trash, where(:trashed => true)
20
+ scope :not_trash, where(:trashed => false)
21
+ scope :read, where(:read => true)
22
+ scope :unread, where(:read => false)
23
+
24
+ after_validation :remove_duplicate_errors
25
+ class << self
26
+ def mark_as_read(options={})
27
+ where(options).update_all(:read => true)
28
+ end
29
+
30
+ def mark_as_unread(options={})
31
+ where(options).update_all(:read => false)
32
+ end
33
+
34
+ def move_to_trash(options={})
35
+ where(options).update_all(:trashed => true)
36
+ end
37
+
38
+ def untrash(options={})
39
+ where(options).update_all(:trashed => false)
40
+ end
41
+
42
+ def move_to_inbox(options={})
43
+ where(options).update_all(:mailbox_type => :inbox, :trashed => false)
44
+ end
45
+
46
+ def move_to_sentbox(options={})
47
+ where(options).update_all(:mailbox_type => :sentbox, :trashed => false)
48
+ end
49
+ end
50
+
51
+ def mark_as_read
52
+ update_attributes(:read => true)
53
+ end
54
+
55
+ def mark_as_unread
56
+ update_attributes(:read => false)
57
+ end
58
+
59
+ def move_to_trash
60
+ update_attributes(:trashed => true)
61
+ end
62
+
63
+ def untrash
64
+ update_attributes(:trashed => false)
65
+ end
66
+
67
+ def move_to_inbox
68
+ update_attributes(:mailbox_type => :inbox, :trashed => false)
69
+ end
70
+
71
+ def move_to_sentbox
72
+ update_attributes(:mailbox_type => :sentbox, :trashed => false)
73
+ end
74
+
75
+ protected
76
+
77
+ def remove_duplicate_errors
78
+ if self.errors["message.conversation.subject"].present? and self.errors["message.subject"].present?
79
+ self.errors["message.conversation.subject"].each do |msg|
80
+ self.errors["message.conversation.subject"].delete(msg)
81
+ end
82
+ end
83
+ end
70
84
 
71
85
  end
@@ -1,10 +1,13 @@
1
1
  class CreateMailboxer < ActiveRecord::Migration
2
2
  def self.up
3
+ #Tables
4
+ #Conversations
3
5
  create_table :conversations do |t|
4
6
  t.column :subject, :string, :default => ""
5
7
  t.column :created_at, :datetime, :null => false
6
8
  t.column :updated_at, :datetime, :null => false
7
9
  end
10
+ #Receipts
8
11
  create_table :receipts do |t|
9
12
  t.references :receiver, :polymorphic => true
10
13
  t.column :message_id, :integer, :null => false
@@ -15,21 +18,39 @@ class CreateMailboxer < ActiveRecord::Migration
15
18
  t.column :created_at, :datetime, :null => false
16
19
  t.column :updated_at, :datetime, :null => false
17
20
  end
21
+ #Messages
18
22
  create_table :messages do |t|
19
23
  t.column :body, :text
20
24
  t.column :subject, :string, :default => ""
21
- t.column :headers, :text
22
25
  t.references :sender, :polymorphic => true
23
26
  t.column :conversation_id, :integer
24
- t.column :sent, :boolean, :default => false
25
27
  t.column :draft, :boolean, :default => false
26
- t.column :system, :boolean, :default => false
27
28
  t.column :updated_at, :datetime, :null => false
28
29
  t.column :created_at, :datetime, :null => false
29
30
  end
31
+
32
+
33
+ #Indexes
34
+ #Conversations
35
+ #Receipts
36
+ add_index "receipts","message_id"
37
+ #Messages
38
+ add_index "messages","conversation_id"
39
+
40
+ #Foreign keys
41
+ #Conversations
42
+ #Receipts
43
+ add_foreign_key "receipts", "messages", :name => "receipts_on_message_id"
44
+ #Messages
45
+ add_foreign_key "messages", "conversations", :name => "messages_on_conversation_id"
30
46
  end
31
47
 
32
48
  def self.down
49
+ #Tables
50
+ remove_foreign_key "receipts", :name => "receipts_on_message_id"
51
+ remove_foreign_key "messages", :name => "messages_on_conversation_id"
52
+
53
+ #Indexes
33
54
  drop_table :receipts
34
55
  drop_table :conversations
35
56
  drop_table :messages
@@ -22,24 +22,20 @@ module Mailboxer
22
22
  end
23
23
 
24
24
  def send_message(recipients, msg_body, subject)
25
- convo = Conversation.create!({:recipients => recipients, :body => msg_body, :subject => subject})
26
- message = Message.create({:sender => self, :conversation => convo, :body => msg_body, :subject => subject})
25
+ convo = Conversation.new({:subject => subject})
26
+ message = Message.new({:sender => self, :conversation => convo, :body => msg_body, :subject => subject})
27
27
  message.recipients = recipients.is_a?(Array) ? recipients : [recipients]
28
28
  message.recipients = message.recipients.uniq
29
- message.deliver(:inbox)
30
- return mailbox[:sentbox] << message
29
+ return message.deliver
31
30
  end
32
31
 
33
32
  def reply(conversation, recipients, reply_body, subject = nil)
34
- return nil if(reply_body.blank?)
35
- conversation.update_attribute(:updated_at, Time.now)
36
33
  subject = subject || "RE: #{conversation.subject}"
37
- response = Message.create({:sender => self, :conversation => conversation, :body => reply_body, :subject => subject})
34
+ response = Message.new({:sender => self, :conversation => conversation, :body => reply_body, :subject => subject})
38
35
  response.recipients = recipients.is_a?(Array) ? recipients : [recipients]
39
36
  response.recipients = response.recipients.uniq
40
37
  response.recipients.delete(self)
41
- response.deliver(:inbox)
42
- return mailbox[:sentbox] << response
38
+ return response.deliver(true)
43
39
  end
44
40
 
45
41
  def reply_to_sender(receipt, reply_body, subject = nil)
data/mailboxer.gemspec CHANGED
@@ -1,35 +1,35 @@
1
-
2
1
  Gem::Specification.new do |s|
3
- s.name = "mailboxer"
4
- s.version = "0.0.13"
2
+ s.name = "mailboxer"
3
+ s.version = "0.0.14"
4
+ s.authors = ["Eduardo Casanova Cuesta"]
5
+ s.summary = "Messaging system for rails apps."
6
+ s.description = "A Rails engine that allows any model to act as messageable, permitting it interchange messages with any other messageable model."
7
+ s.email = "ecasanovac@gmail.com"
8
+ s.homepage = "http://github.com/ging/mailboxer"
9
+ s.files = `git ls-files`.split("\n")
10
+
11
+ # Gem dependencies
12
+ #
13
+ # SQL foreign keys
14
+ s.add_runtime_dependency('foreigner', '~> 0.9.1')
15
+
16
+ # Development Gem dependencies
17
+ #
18
+ s.add_development_dependency('rails', '~> 3.0.5')
19
+ # Testing database
20
+ s.add_development_dependency('sqlite3-ruby')
21
+ # Debugging
22
+ if RUBY_VERSION < '1.9'
23
+ s.add_development_dependency('ruby-debug', '~> 0.10.3')
24
+ end
25
+ # Specs
26
+ s.add_development_dependency('rspec-rails', '~> 2.5.0')
27
+ # Fixtures
28
+ s.add_development_dependency('factory_girl', '~> 1.3.2')
29
+ # Population
30
+ s.add_development_dependency('forgery', '~> 0.3.6')
31
+ # Integration testing
32
+ s.add_development_dependency('capybara', '~> 0.3.9')
5
33
 
6
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
7
- s.authors = ["Eduardo Casanova Cuesta"]
8
- s.date = %q{2011-03-26}
9
- s.description = %q{A Rails engine that allows any model to act as messageable, permitting it interchange messages with any other messageable model. }
10
- s.email = %q{ecasanovac@gmail.com}
11
- s.extra_rdoc_files = [
12
- "LICENSE.txt",
13
- "README.rdoc"
14
- ]
15
- s.homepage = %q{http://github.com/ging/mailboxer}
16
- s.licenses = ["MIT"]
17
- s.require_paths = ["lib"]
18
- s.rubygems_version = %q{1.3.7}
19
- s.summary = %q{Messaging system for rails apps.}
20
- s.files = `git ls-files`.split("\n")
21
-
22
- s.add_development_dependency('rails', '~> 3.0.5')
23
- s.add_development_dependency(%q<sqlite3-ruby>, [">= 0"])
24
- if RUBY_VERSION < '1.9'
25
- s.add_development_dependency('ruby-debug', '~> 0.10.3')
26
- end
27
- s.add_development_dependency(%q<rspec-rails>, [">= 2.0.0.beta"])
28
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
29
- s.add_development_dependency(%q<jeweler>, ["~> 1.5.0.pre3"])
30
- s.add_development_dependency(%q<rcov>, [">= 0"])
31
- s.add_development_dependency('factory_girl', '~> 1.3.2')
32
- s.add_development_dependency('forgery', '~> 0.3.6')
33
- s.add_development_dependency('capybara', '~> 0.3.9')
34
34
  end
35
35
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailboxer
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
4
+ hash: 3
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 13
10
- version: 0.0.13
9
+ - 14
10
+ version: 0.0.14
11
11
  platform: ruby
12
12
  authors:
13
13
  - Eduardo Casanova Cuesta
@@ -15,13 +15,29 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-26 00:00:00 +01:00
18
+ date: 2011-03-30 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: rails
22
+ name: foreigner
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 57
30
+ segments:
31
+ - 0
32
+ - 9
33
+ - 1
34
+ version: 0.9.1
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: rails
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
25
41
  none: false
26
42
  requirements:
27
43
  - - ~>
@@ -33,11 +49,11 @@ dependencies:
33
49
  - 5
34
50
  version: 3.0.5
35
51
  type: :development
36
- version_requirements: *id001
52
+ version_requirements: *id002
37
53
  - !ruby/object:Gem::Dependency
38
54
  name: sqlite3-ruby
39
55
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
56
+ requirement: &id003 !ruby/object:Gem::Requirement
41
57
  none: false
42
58
  requirements:
43
59
  - - ">="
@@ -47,11 +63,11 @@ dependencies:
47
63
  - 0
48
64
  version: "0"
49
65
  type: :development
50
- version_requirements: *id002
66
+ version_requirements: *id003
51
67
  - !ruby/object:Gem::Dependency
52
68
  name: ruby-debug
53
69
  prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
70
+ requirement: &id004 !ruby/object:Gem::Requirement
55
71
  none: false
56
72
  requirements:
57
73
  - - ~>
@@ -63,75 +79,27 @@ dependencies:
63
79
  - 3
64
80
  version: 0.10.3
65
81
  type: :development
66
- version_requirements: *id003
67
- - !ruby/object:Gem::Dependency
68
- name: rspec-rails
69
- prerelease: false
70
- requirement: &id004 !ruby/object:Gem::Requirement
71
- none: false
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- hash: 31098209
76
- segments:
77
- - 2
78
- - 0
79
- - 0
80
- - beta
81
- version: 2.0.0.beta
82
- type: :development
83
82
  version_requirements: *id004
84
83
  - !ruby/object:Gem::Dependency
85
- name: bundler
84
+ name: rspec-rails
86
85
  prerelease: false
87
86
  requirement: &id005 !ruby/object:Gem::Requirement
88
87
  none: false
89
88
  requirements:
90
89
  - - ~>
91
90
  - !ruby/object:Gem::Version
92
- hash: 23
91
+ hash: 27
93
92
  segments:
94
- - 1
95
- - 0
96
- - 0
97
- version: 1.0.0
98
- type: :development
99
- version_requirements: *id005
100
- - !ruby/object:Gem::Dependency
101
- name: jeweler
102
- prerelease: false
103
- requirement: &id006 !ruby/object:Gem::Requirement
104
- none: false
105
- requirements:
106
- - - ~>
107
- - !ruby/object:Gem::Version
108
- hash: 270495430
109
- segments:
110
- - 1
93
+ - 2
111
94
  - 5
112
95
  - 0
113
- - pre3
114
- version: 1.5.0.pre3
96
+ version: 2.5.0
115
97
  type: :development
116
- version_requirements: *id006
117
- - !ruby/object:Gem::Dependency
118
- name: rcov
119
- prerelease: false
120
- requirement: &id007 !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- hash: 3
126
- segments:
127
- - 0
128
- version: "0"
129
- type: :development
130
- version_requirements: *id007
98
+ version_requirements: *id005
131
99
  - !ruby/object:Gem::Dependency
132
100
  name: factory_girl
133
101
  prerelease: false
134
- requirement: &id008 !ruby/object:Gem::Requirement
102
+ requirement: &id006 !ruby/object:Gem::Requirement
135
103
  none: false
136
104
  requirements:
137
105
  - - ~>
@@ -143,11 +111,11 @@ dependencies:
143
111
  - 2
144
112
  version: 1.3.2
145
113
  type: :development
146
- version_requirements: *id008
114
+ version_requirements: *id006
147
115
  - !ruby/object:Gem::Dependency
148
116
  name: forgery
149
117
  prerelease: false
150
- requirement: &id009 !ruby/object:Gem::Requirement
118
+ requirement: &id007 !ruby/object:Gem::Requirement
151
119
  none: false
152
120
  requirements:
153
121
  - - ~>
@@ -159,11 +127,11 @@ dependencies:
159
127
  - 6
160
128
  version: 0.3.6
161
129
  type: :development
162
- version_requirements: *id009
130
+ version_requirements: *id007
163
131
  - !ruby/object:Gem::Dependency
164
132
  name: capybara
165
133
  prerelease: false
166
- requirement: &id010 !ruby/object:Gem::Requirement
134
+ requirement: &id008 !ruby/object:Gem::Requirement
167
135
  none: false
168
136
  requirements:
169
137
  - - ~>
@@ -175,16 +143,15 @@ dependencies:
175
143
  - 9
176
144
  version: 0.3.9
177
145
  type: :development
178
- version_requirements: *id010
179
- description: "A Rails engine that allows any model to act as messageable, permitting it interchange messages with any other messageable model. "
146
+ version_requirements: *id008
147
+ description: A Rails engine that allows any model to act as messageable, permitting it interchange messages with any other messageable model.
180
148
  email: ecasanovac@gmail.com
181
149
  executables: []
182
150
 
183
151
  extensions: []
184
152
 
185
- extra_rdoc_files:
186
- - LICENSE.txt
187
- - README.rdoc
153
+ extra_rdoc_files: []
154
+
188
155
  files:
189
156
  - .gitignore
190
157
  - .yardopts
@@ -260,8 +227,8 @@ files:
260
227
  - spec/spec_helper.rb
261
228
  has_rdoc: true
262
229
  homepage: http://github.com/ging/mailboxer
263
- licenses:
264
- - MIT
230
+ licenses: []
231
+
265
232
  post_install_message:
266
233
  rdoc_options: []
267
234