mail_manager 3.2.6 → 3.2.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d5b18070eb704e09c4abee8c914aaa548deb43e6
4
- data.tar.gz: 9b29f0f717833d1a4c3b8fa0d2858592b4823195
3
+ metadata.gz: 7086dba0cddea0712c21f6c60b68081d53aa2d5d
4
+ data.tar.gz: ff73fe7f60296ab4368baa6ac7b91268be0528ef
5
5
  SHA512:
6
- metadata.gz: 18a71c74071f945dcfd0cf5590395f72648e82a13222abb83205702c32446de593dbe9a69d9d310dc8b2ae8e021aee3d6a61d850f050d2c4c6efb7829f16926e
7
- data.tar.gz: 751c9ef49582c67528776bf9e0e573316e539a38382df09fd59e7a0ac272b98d661aded4c3bbab1ccfb4e4e1dbd5bd550bf1ed105ef0aca10a4ea9cdee4ac8e3
6
+ metadata.gz: c0119d6ab3f1bc2f1f64680a1178eaf84ee25b61f809c452276178e471f9b0799fffb4442a1b35c2b4fa03f211ed90b3b622dcd6d1ee592a7d396d7e0473e8a1
7
+ data.tar.gz: 8d41ad9933f4f6b610ded97d39e31c76006d427e82da9f7ac38f0c6c78860b0b0e592572c4458d8725fe61c930a2f1784e95a0d2c32def26402c7155bc5d76dd
data/Gemfile CHANGED
@@ -25,12 +25,13 @@ group :test, :development do
25
25
  gem 'quiet_assets'
26
26
  gem "factory_girl_rails", "~>4.3"
27
27
  gem "faker"
28
+ gem 'post_office'
28
29
  end
29
30
 
30
- group :test, :development, :post_office do
31
- gem 'dotenv'
32
- gem 'post_office', "~>0.3"
33
- end
31
+ #group :test, :development, :post_office do
32
+ # gem 'dotenv'
33
+ # gem 'post_office', "~>0.3"
34
+ #end
34
35
 
35
36
 
36
37
  # Testing Gems
@@ -12,6 +12,15 @@ body {
12
12
  height: 85px;
13
13
  min-width: 766px;
14
14
  }
15
+
16
+ .menu_expand {
17
+ cursor: pointer;
18
+ }
19
+
20
+ span.menu_expand:hover {
21
+ color: #fc6;
22
+ }
23
+
15
24
  /*
16
25
  img {
17
26
  display: block;
@@ -129,7 +138,9 @@ table.list tr.even {
129
138
  background: #e2e8d9;
130
139
  }
131
140
 
132
-
141
+ .mailing_buttons {
142
+ width: 310px;
143
+ }
133
144
  /* form labels have different alignment*/
134
145
  label {font-size: 11pt;
135
146
  font-family: helvetica, arial, sans-serif;
@@ -143,6 +154,10 @@ label {font-size: 11pt;
143
154
  padding: 7px 7px 0 0;
144
155
  }
145
156
 
157
+ .field {
158
+ clear: both;
159
+ }
160
+
146
161
  input, select, textarea {
147
162
  margin: 6px 0;
148
163
  padding: 2px;
@@ -173,7 +188,7 @@ input.button {
173
188
  font-size: 11pt;
174
189
  font-weight: bold;
175
190
  color: #555;
176
- margin-right: 10px;
191
+ margin-right: 5px;
177
192
  cursor: pointer;
178
193
  }
179
194
 
@@ -210,7 +225,7 @@ a.button:link, a.button:visited {
210
225
  font-size: 11pt;
211
226
  font-weight: bold;
212
227
  color: #555;
213
- margin-right: 10px;
228
+ margin-right: 5px;
214
229
  /* do I need this? */
215
230
  cursor: pointer;
216
231
  }
@@ -75,6 +75,11 @@ module MailManager
75
75
  @@mailable_things.merge!({klass => methods})
76
76
  end
77
77
 
78
+ # unregister a mailable
79
+ def self.unregister(klass)
80
+ @@mailable_things.delete(klass)
81
+ end
82
+
78
83
  =begin rdoc
79
84
  Finds available mailable items by searching through all registered mailables, calling their finders and sorting by name.
80
85
  =end
@@ -50,9 +50,10 @@ module MailManager
50
50
 
51
51
  class << self
52
52
  # send a mailing related to the message's data
53
- def deliver_message(message)
53
+ def deliver_message(message, cached_parts=nil)
54
+ cached_parts ||= message.parts
54
55
  self.send_mail(message.subject,message.email_address_with_name,message.from_email_address,
55
- message.parts,message.guid,message.mailing.include_images?)
56
+ cached_parts,message.guid,message.mailing.include_images?)
56
57
  end
57
58
 
58
59
  # create mailing; parsing html sources for images to attach/include
@@ -16,7 +16,7 @@ completed - Mailing has been sent
16
16
  module MailManager
17
17
  class Mailing < ActiveRecord::Base
18
18
  self.table_name = "#{MailManager.table_prefix}mailings"
19
- has_many :messages, :class_name => 'MailManager::Message'
19
+ has_many :messages, :class_name => 'MailManager::Message', inverse_of: :mailing
20
20
  has_many :test_messages, :class_name => 'MailManager::TestMessage'
21
21
  has_many :bounces, :class_name => 'MailManager::Bounce'
22
22
  has_and_belongs_to_many :mailing_lists, :class_name => 'MailManager::MailingList',
@@ -63,15 +63,14 @@ module MailManager
63
63
  end
64
64
  change_status(:processing)
65
65
  initialize_messages
66
- messages.pending.each do |message|
66
+ messages.pending.limit(MailManager.deliveries_per_run).each do |message|
67
67
  if reload.status.to_s != 'processing'
68
68
  Rails.logger.warn "Mailing #{id} is no longer in processing status it was changed to #{status} while running"
69
69
  return false
70
70
  end
71
71
  begin
72
- # use the cached mailing parts, set messages mailing to self
73
- message.mailing=self
74
- message.deliver
72
+ # should use the cached mailing parts as mailing object for message should be the same as its caller
73
+ message.deliver(raw_parts)
75
74
  rescue => e
76
75
  message.result = "Error: #{e.message} - #{e.backtrace.join("\n")}"
77
76
  message.change_status(:failed)
@@ -79,13 +78,17 @@ module MailManager
79
78
  Rails.logger.debug "Sleeping #{MailManager.sleep_time_between_messages} before next message"
80
79
  sleep MailManager.sleep_time_between_messages
81
80
  end
82
- change_status(:completed) if status.to_s.eql?('processing')
81
+ if messages.pending.count == 0
82
+ change_status(:completed)
83
+ else
84
+ self.delay(run_at: [scheduled_at,Time.now.utc].max).deliver
85
+ end
83
86
  end
84
87
  end
85
88
 
86
89
  def mailable
87
90
  return @mailable if @mailable
88
- return self unless mailable_type and mailable_id
91
+ return (@mailable=nil) if mailable_type.nil? or mailable_id.nil?
89
92
  @mailable = mailable_type.constantize.find(mailable_id)
90
93
  end
91
94
 
@@ -121,9 +124,10 @@ module MailManager
121
124
  @raw_parts ||= mailable.mailable_parts
122
125
  end
123
126
 
124
- def parts(substitutions={})
127
+ def parts(substitutions={}, cached_parts=nil)
128
+ cached_parts ||= raw_parts
125
129
  parts = []
126
- raw_parts.each do |type,source|
130
+ cached_parts.each do |type,source|
127
131
  parts << [type, Mailing.substitute_values(source.dup,substitutions)]
128
132
  end
129
133
  parts
@@ -133,6 +137,7 @@ module MailManager
133
137
  return if value.nil?
134
138
  self[:mailable_type] = value.class.name
135
139
  self[:mailable_id] = value.id
140
+ @mailable = value
136
141
  end
137
142
 
138
143
  def mailable_class_and_id=(value)
@@ -200,6 +205,7 @@ module MailManager
200
205
  end
201
206
 
202
207
  def can_run?
208
+ # processing is allowed for failed job reset and is OK since we lock around whole job
203
209
  ['scheduled','processing'].include?(status.to_s)
204
210
  end
205
211
 
@@ -24,12 +24,14 @@ module MailManager
24
24
 
25
25
  attr_protected :id
26
26
 
27
+ # custom query to efficiently retrieve the active email addresses and contact ids and subscription ids for a
28
+ # given list of mailing lists
27
29
  def self.active_email_addresses_contact_ids_subscription_ids_for_mailing_list_ids(mailing_list_ids)
28
30
  results = MailManager::MailingList.connection.execute(
29
31
  %Q|select c.email_address as email_address, c.id as contact_id,
30
32
  s.id as subscription_id from #{MailManager.table_prefix}contacts c
31
33
  inner join #{MailManager.table_prefix}subscriptions s on c.id=s.contact_id
32
- where s.status in ('active') and mailing_list_id in (#{
34
+ where s.status in ('active') and c.deleted_at is NULL and mailing_list_id in (#{
33
35
  mailing_list_ids.join(',')})|
34
36
  )
35
37
  results = results.map(&:values) if results.first.is_a?(Hash)
@@ -40,11 +42,12 @@ module MailManager
40
42
  }
41
43
  end
42
44
 
43
-
45
+ # whether or not the mailing list has been soft deleted
44
46
  def active?
45
47
  deleted_at.nil?
46
48
  end
47
49
 
50
+ # whether or not the mailing list has been soft deleted
48
51
  def inactive?
49
52
  !active?
50
53
  end
@@ -80,7 +80,7 @@ module MailManager
80
80
  end
81
81
 
82
82
  # sends the message through Mailer
83
- def deliver
83
+ def deliver(cached_parts=nil)
84
84
  # lock only needed until status is updated
85
85
  Lock.with_lock("deliver_message_#{self.id}") do
86
86
  reload
@@ -90,7 +90,12 @@ module MailManager
90
90
  Rails.logger.warn "Message(#{self.id})'s is no longer suitable to deliver.. staus: #{status}"
91
91
  end
92
92
  end
93
- MailManager::Mailer.deliver_message(self)
93
+ cached_parts = if cached_parts.present?
94
+ mailing.parts(substitutions, cached_parts.dup)
95
+ else
96
+ parts
97
+ end
98
+ MailManager::Mailer.deliver_message(self,cached_parts)
94
99
  change_status(:sent)
95
100
  # allow other errors to bubble up
96
101
  rescue MailManager::LockException => e
@@ -3,7 +3,7 @@
3
3
 
4
4
  <%= form_tag mail_manager.bounces_path, :id => 'search_form', :method => 'GET' do %>
5
5
  <label for="mailing_id">Mailing:</label><%= select_tag "mailing_id", options_for_select(@mailings.collect{|mailing| ["#{mailing.subject} (#{l mailing.status_changed_at if mailing.status_changed_at.present?}) (#{mailing.bounces.size})",mailing.id.to_s]},params[:mailing_id].to_i), :include_blank => true, :onChange => "$('#search_form').submit()" %><br />
6
- <label for="bounce_status">Status:</label><%= select_tag "bounce[status]", options_for_select([['Needs Attention','needs_manual_intervention'],['Resolved','resolved']],params[:bounce][:status]), :include_blank => true, :onChange => "$('#search_form').submit()" %><br />
6
+ <label for="bounce_status">Status:</label><%= select_tag "bounce[status]", options_for_select([['Needs Attention','needs_manual_intervention'],['Dismissed','dismissed'],['Removed','removed'],['Unprocessed','unprocessed'],['Invalid','invalid'],['Resolved','resolved']],params[:bounce][:status]), :include_blank => true, :onChange => "$('#search_form').submit()" %><br />
7
7
  <% end %>
8
8
  <% if @bounces.length == 0 %>
9
9
  <h3>No bounces found for the Mailing with given status.</h3>
@@ -1,5 +1,7 @@
1
1
  module MailManager
2
2
  # set up accessors for configuration options from config/mail_manager.yml
3
+ # deliveries_per_run: how many emails to send per 'run' of a mailing job (it kicks off a new job after this number if more exist.. used to keep run time down)
4
+ mattr_accessor :deliveries_per_run
3
5
  # table_prefix: prefix for database table names to avoid collisions within another app
4
6
  mattr_accessor :table_prefix
5
7
  # secret: a secret for encrypting tokens and guids
@@ -163,6 +165,7 @@ module MailManager
163
165
  MailManager.table_prefix ||= 'mail_manager_'
164
166
  end
165
167
  MailManager.default_from_email_address ||= conf.default_from_email_address rescue nil
168
+ MailManager.deliveries_per_run ||= (conf.deliveries_per_run || 50) rescue 50
166
169
  MailManager.signup_email_address ||= conf.signup_email_address rescue nil
167
170
  MailManager.bounce ||= conf.bounce || {} rescue {}
168
171
  MailManager.unsubscribe_path ||= conf.unsubscribe_path || "/listmgr" rescue "/listmgr"
@@ -1,3 +1,3 @@
1
1
  module MailManager
2
- VERSION = "3.2.6"
2
+ VERSION = "3.2.7"
3
3
  end
@@ -51,6 +51,7 @@ namespace :mail_manager do
51
51
  # roles_method: the method that your "current_user" object defines its role names(returns a list of strings)
52
52
  # unsubscribe_path: public url for unsubscribing ... this is a prefix and is followed by a message 'guid', defaults to '/listmgr' and routes as '/listmgr/:guid'
53
53
  # dont_include_images_domains: a list of domains that won't include images in the email, whether or not the mailing is set to include them
54
+ # deliveries_per_run: how many messages do deliver for a mailing job 'per run' this keeps the job limited to a short run allowing other jobs to run as well for larger lists and for the job to possibly be more graceful on a delayed job stoppage.
54
55
  # sleep_time_between_messages: a timeout between messages to slow the output of emails to your email server; you should probably limit with your mail server itself if possible
55
56
  # path_prefix: a prefix to the mail manager routes(defaults to /admin)
56
57
  # table_prefix: prefixes all mail manager tables with a string to avoid collisions with your app - should be set BEFORE running migrations
@@ -12,13 +12,6 @@ Gem::Specification.new do |gem|
12
12
  gem.description = %q{Manages the delivery of mailable items. Handles contacts, mailing lists, bounces, unsubscribe, opt-in, etc. Also available with a newsletter manager (including newsletter designs and elements management, wysiwyg newsletter editor, and newsletter archive) as well as user access control as part of the iReach gem.}
13
13
  gem.summary = %q{Mailing list management tool}
14
14
  gem.homepage = "http://ireachnews.com"
15
- gem.post_install_message = <<-EOT
16
- #** Mail Manager 3.2.6 messages **********************
17
- #** Required Actions for every upgrade **
18
- rake mail_manager:upgrade # this adds any new migrations and migrates your DB ...
19
- #** NOTE! you should try this in development before pushing to your production site
20
- #*END Mail Manager messages ********************
21
- EOT
22
15
 
23
16
  gem.add_dependency "rails", "~>3.2"
24
17
  gem.add_dependency 'jquery-rails', "~>3.1"
@@ -1,2 +1,2 @@
1
- export POST_OFFICE_SMTP_PORT=25000
2
- export POST_OFFICE_POP_PORT=11000
1
+ export POST_OFFICE_SMTP_PORT=25005
2
+ export POST_OFFICE_POP_PORT=11005
@@ -4,7 +4,7 @@ $:.push File.expand_path(File.join('..','..','lib'), __FILE__)
4
4
 
5
5
  require "rubygems"
6
6
  require "bundler"
7
- Bundler.setup(:post_office)
7
+ Bundler.setup
8
8
  require 'post_office_manager'
9
9
  require 'dotenv'
10
10
 
@@ -20,6 +20,9 @@ RSpec.feature MailManager::Bounce do
20
20
  @bounce1 = FactoryGirl.create(:bounce, mailing_id: @mailing1.id, status: 'needs_manual_intervention')
21
21
  @bounce2 = FactoryGirl.create(:bounce, mailing_id: @mailing2.id, status: 'resolved')
22
22
  @bounce3 = FactoryGirl.create(:bounce, status: 'invalid')
23
+ @bounce6 = FactoryGirl.create(:bounce, status: 'unprocessed')
24
+ @bounce4 = FactoryGirl.create(:bounce, mailing_id: @mailing1.id, status: 'removed')
25
+ @bounce5 = FactoryGirl.create(:bounce, mailing_id: @mailing1.id, status: 'dismissed')
23
26
  @mailing1.reload
24
27
  @mailing2.reload
25
28
  end
@@ -27,14 +30,19 @@ RSpec.feature MailManager::Bounce do
27
30
  visit "/mail_manager/bounces"
28
31
  select "#{@mailing1.subject} (#{I18n.l @mailing1.status_changed_at}) (#{@mailing1.bounces.size})", from: "Mailing:"
29
32
  expect(page).to have_css("#view_bounce_#{@bounce1.id}", count: 1)
30
- expect(page).to have_content("View",count: 1)
33
+ expect(page).to have_css("#view_bounce_#{@bounce4.id}", count: 1)
34
+ expect(page).to have_css("#view_bounce_#{@bounce5.id}", count: 1)
35
+ expect(page).to have_content("View",count: 3)
31
36
  end
32
37
  it "shows them all", js: true do
33
38
  visit "/mail_manager/bounces"
34
39
  expect(page).to have_css("#view_bounce_#{@bounce1.id}", count: 1)
35
40
  expect(page).to have_css("#view_bounce_#{@bounce2.id}", count: 1)
36
41
  expect(page).to have_css("#view_bounce_#{@bounce3.id}", count: 1)
37
- expect(page).to have_content("View",count: 3)
42
+ expect(page).to have_css("#view_bounce_#{@bounce4.id}", count: 1)
43
+ expect(page).to have_css("#view_bounce_#{@bounce5.id}", count: 1)
44
+ expect(page).to have_css("#view_bounce_#{@bounce6.id}", count: 1)
45
+ expect(page).to have_content("View",count: 6)
38
46
  end
39
47
  it "filters by 'Needs Attention' status" do
40
48
  visit "/mail_manager/bounces"
@@ -48,9 +56,29 @@ RSpec.feature MailManager::Bounce do
48
56
  expect(page).to have_css("#view_bounce_#{@bounce2.id}", count: 1)
49
57
  expect(page).to have_content("View",count: 1)
50
58
  end
51
- it "doesn't show 'invalid' status" do
59
+ it "filters by 'Removed' status" do
60
+ visit "/mail_manager/bounces"
61
+ select "Removed", from: "Status:"
62
+ expect(page).to have_css("#view_bounce_#{@bounce4.id}", count: 1)
63
+ expect(page).to have_content("View",count: 1)
64
+ end
65
+ it "filters by 'Dismissed' status" do
66
+ visit "/mail_manager/bounces"
67
+ select "Dismissed", from: "Status:"
68
+ expect(page).to have_css("#view_bounce_#{@bounce5.id}", count: 1)
69
+ expect(page).to have_content("View",count: 1)
70
+ end
71
+ it "filters by 'Invalid' status" do
52
72
  visit "/mail_manager/bounces"
53
- expect{select "Invalid", from: "Status:"}.to raise_error
73
+ select "Invalid", from: "Status:"
74
+ expect(page).to have_css("#view_bounce_#{@bounce3.id}", count: 1)
75
+ expect(page).to have_content("View",count: 1)
76
+ end
77
+ it "filters by 'Unprocessed' status" do
78
+ visit "/mail_manager/bounces"
79
+ select "Unprocessed", from: "Status:"
80
+ expect(page).to have_css("#view_bounce_#{@bounce6.id}", count: 1)
81
+ expect(page).to have_content("View",count: 1)
54
82
  end
55
83
  it "filters by 'Resolved' status and mailing" do
56
84
  visit "/mail_manager/bounces"
@@ -49,6 +49,23 @@ RSpec.describe MailManager::MailingList do
49
49
  }
50
50
  }.sort
51
51
  )
52
+ and_it "doesn't include soft deleted contacts" do
53
+ contact2.delete
54
+ expect(MailManager::MailingList.
55
+ active_email_addresses_contact_ids_subscription_ids_for_mailing_list_ids(
56
+ [list1.id, list2.id]).sort).to eq (
57
+ {
58
+ contact1.email_address => {
59
+ contact_id: contact1.id,
60
+ subscription_id: sub1.id
61
+ },
62
+ contact3.email_address => {
63
+ contact_id: contact3.id,
64
+ subscription_id: sub4.id
65
+ }
66
+ }.sort
67
+ )
68
+ end
52
69
  end
53
70
  end
54
71
  end
@@ -1,5 +1,17 @@
1
1
  require 'rails_helper'
2
2
 
3
+ class MyMailable < MailManager::Mailable
4
+ cattr_accessor :mailable_parts_call_count
5
+ def initialize(*args)
6
+ @@mailable_parts_call_count = 0
7
+ super
8
+ end
9
+
10
+ def mailable_parts
11
+ @@mailable_parts_call_count += 1
12
+ super
13
+ end
14
+ end
3
15
  RSpec.describe MailManager::Mailing do
4
16
  let(:valid_attributes) {FactoryGirl.attributes_for(:mailing)}
5
17
  let(:invalid_attributes) {FactoryGirl.attributes_for(:mailing).delete(
@@ -15,11 +27,6 @@ RSpec.describe MailManager::Mailing do
15
27
  mailing.change_status(:processing)
16
28
  expect(mailing.can_run?).to be true
17
29
  end
18
- it "allows a processing mailing to run(for resetting a failed job)" do
19
- mailing = MailManager::Mailing.create(valid_attributes)
20
- mailing.change_status(:processing)
21
- expect(mailing.can_run?).to be true
22
- end
23
30
  it "sets its initial status properly" do
24
31
  attributes = valid_attributes
25
32
  attributes.delete('status')
@@ -107,4 +114,59 @@ RSpec.describe MailManager::Mailing do
107
114
  [contact1,contact2].map(&:email_address).sort
108
115
  )
109
116
  end
117
+
118
+ context "when sending a mailing" do
119
+ before(:each) do
120
+ if MailManager.register_generic_mailable
121
+ MailManager::MailableRegistry.register('MyMailable',{
122
+ :find_mailables => :all,
123
+ :name => :name,
124
+ :parts => [
125
+ ['text/plain', :email_text],
126
+ ['text/html', :email_html]
127
+ ]
128
+ })
129
+ end
130
+ Delayed::Worker.delay_jobs = true
131
+ @list = FactoryGirl.create(:mailing_list)
132
+ @contacts = FactoryGirl.create_list(:contact,random_int(4,10))
133
+ @contacts.each{|c| c.subscribe(@list)}
134
+ @mailable = MyMailable.create(FactoryGirl.attributes_for(:mailable))
135
+ @mailing = FactoryGirl.create(:mailing, mailable: @mailable)
136
+ @mailing.mailable = @mailable
137
+ @mailing.mailing_lists << @list
138
+ @mailing.schedule
139
+ end
140
+ after(:each) do
141
+ Delayed::Worker.delay_jobs = false
142
+ MailManager::MailableRegistry.unregister('MyMailable')
143
+ end
144
+ it "caches its mailable for use between messages" do
145
+ MyMailable.mailable_parts_call_count = 0
146
+ @mailing.deliver
147
+ expect(MyMailable.mailable_parts_call_count).to eq 1
148
+ end
149
+
150
+ it "sends a specified number of messages per job" do
151
+ expect(Delayed::Job.count).to eq 1
152
+ expect(MailManager.deliveries_per_run).to be > 0
153
+ MailManager.deliveries_per_run = 2
154
+ ActionMailer::Base.deliveries.clear
155
+ @mailing.deliver
156
+ expect(@mailing.status.to_s).to eq 'processing'
157
+ expect(Delayed::Job.count).to eq 2
158
+ expect(ActionMailer::Base.deliveries.count).to eq 2
159
+ expect(@mailing.messages.pending.count).to eq (@contacts.count - 2)
160
+ end
161
+ it 'finishes the mailing' do
162
+ MailManager.deliveries_per_run = 2
163
+ ActionMailer::Base.deliveries.clear
164
+ while ['scheduled','processing'].include?(@mailing.status) do
165
+ @mailing.deliver
166
+ end
167
+ expect(Delayed::Job.count).to eq (@contacts.count/2.0).ceil
168
+ expect(@mailing.status.to_s).to eq 'completed'
169
+ expect(ActionMailer::Base.deliveries.count).to eq @contacts.count
170
+ end
171
+ end
110
172
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mail_manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.6
4
+ version: 3.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lone Star Internet
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-05-22 00:00:00.000000000 Z
12
+ date: 2015-09-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -506,12 +506,7 @@ homepage: http://ireachnews.com
506
506
  licenses:
507
507
  - MIT
508
508
  metadata: {}
509
- post_install_message: |2
510
- #** Mail Manager 3.2.6 messages **********************
511
- #** Required Actions for every upgrade **
512
- rake mail_manager:upgrade # this adds any new migrations and migrates your DB ...
513
- #** NOTE! you should try this in development before pushing to your production site
514
- #*END Mail Manager messages ********************
509
+ post_install_message:
515
510
  rdoc_options: []
516
511
  require_paths:
517
512
  - lib