smailer 0.7.0 → 0.7.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.
- checksums.yaml +4 -4
- data/lib/smailer/compatibility.rb +15 -5
- data/lib/smailer/models/finished_mail.rb +2 -2
- data/lib/smailer/tasks/send.rb +11 -12
- data/lib/smailer/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 45ce6bb0557460b8103244d490a474e83fe56055
|
4
|
+
data.tar.gz: e40b57d41795c0594c368aefc3b6e1ba75e04175
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 035cf4b2a412ba828ea8d16321a8a2ea5f82125375c61f1de53fd2b01addafd23db7d5b769daca44407a2a998a5396180df9790872a0cd75157bf6a6f24de428
|
7
|
+
data.tar.gz: d8fa22c31c189a8452a16468e1377d3480ea56c79724a78ace3ca313753c1128aa18d96820767bd888236288d25e70bbdac291c23a695eb59c61c80aa600fdfb
|
@@ -1,19 +1,29 @@
|
|
1
1
|
module Smailer
|
2
2
|
module Compatibility
|
3
|
-
|
3
|
+
extend self
|
4
|
+
|
5
|
+
def rails_3?
|
4
6
|
Rails::VERSION::MAJOR == 3
|
5
7
|
end
|
6
8
|
|
7
|
-
def
|
9
|
+
def rails_4?
|
8
10
|
Rails::VERSION::MAJOR == 4
|
9
11
|
end
|
10
12
|
|
11
|
-
def
|
12
|
-
|
13
|
+
def rails_3_or_4?
|
14
|
+
rails_3? || rails_4?
|
13
15
|
end
|
14
16
|
|
15
|
-
def
|
17
|
+
def save_without_validation(object)
|
16
18
|
rails_3_or_4? ? object.save(:validate => false) : object.save(false)
|
17
19
|
end
|
20
|
+
|
21
|
+
def update_all(scope, fields, conditions)
|
22
|
+
if rails_3_or_4?
|
23
|
+
scope.where(conditions).update_all(fields)
|
24
|
+
else
|
25
|
+
scope.update_all(fields, conditions)
|
26
|
+
end
|
27
|
+
end
|
18
28
|
end
|
19
29
|
end
|
@@ -29,7 +29,7 @@ module Smailer
|
|
29
29
|
Compatibility.save_without_validation self if changed?
|
30
30
|
end
|
31
31
|
|
32
|
-
def self.add(queued_mail, status = Statuses::SENT)
|
32
|
+
def self.add(queued_mail, status = Statuses::SENT, update_sent_mails_count = true)
|
33
33
|
finished = self.new
|
34
34
|
|
35
35
|
fields_to_copy = [:mail_campaign_id, :key, :from, :to, :subject, :retries, :last_retry_at, :last_error]
|
@@ -45,7 +45,7 @@ module Smailer
|
|
45
45
|
finished.save!
|
46
46
|
queued_mail.destroy
|
47
47
|
|
48
|
-
if finished.mail_campaign
|
48
|
+
if update_sent_mails_count && finished.mail_campaign
|
49
49
|
finished.mail_campaign.sent_mails_count += 1
|
50
50
|
Compatibility.save_without_validation finished.mail_campaign
|
51
51
|
end
|
data/lib/smailer/tasks/send.rb
CHANGED
@@ -30,11 +30,7 @@ module Smailer
|
|
30
30
|
|
31
31
|
# clean up any old locked items
|
32
32
|
expired_locks_condition = ['locked = ? AND locked_at <= ?', true, 1.hour.ago.utc]
|
33
|
-
|
34
|
-
Smailer::Models::QueuedMail.where(expired_locks_condition).update_all(:locked => false)
|
35
|
-
else
|
36
|
-
Smailer::Models::QueuedMail.update_all({:locked => false}, expired_locks_condition)
|
37
|
-
end
|
33
|
+
Smailer::Compatibility.update_all(Smailer::Models::QueuedMail, {:locked => false}, expired_locks_condition)
|
38
34
|
|
39
35
|
# load the queue items to process
|
40
36
|
queue_sort_order = 'retries ASC, id ASC'
|
@@ -47,15 +43,12 @@ module Smailer
|
|
47
43
|
# lock the queue items
|
48
44
|
lock_condition = {:id => items_to_process.map(&:id)}
|
49
45
|
lock_update = {:locked => true, :locked_at => Time.now.utc}
|
50
|
-
|
51
|
-
Smailer::Models::QueuedMail.where(lock_condition).update_all(lock_update)
|
52
|
-
else
|
53
|
-
Smailer::Models::QueuedMail.update_all(lock_update, lock_condition)
|
54
|
-
end
|
46
|
+
Smailer::Compatibility.update_all(Smailer::Models::QueuedMail, lock_update, lock_condition)
|
55
47
|
|
56
48
|
# map of attachment ID to contents - so we don't keep opening files
|
57
49
|
# or URLs
|
58
50
|
cached_attachments = {}
|
51
|
+
finished_mails_counts = Hash.new(0)
|
59
52
|
|
60
53
|
items_to_process.each do |queue_item|
|
61
54
|
# try to send the email
|
@@ -107,16 +100,22 @@ module Smailer
|
|
107
100
|
|
108
101
|
if retries_exceeded || too_old
|
109
102
|
# the message has expired; move to finished_mails
|
110
|
-
Smailer::Models::FinishedMail.add(queue_item, Smailer::Models::FinishedMail::Statuses::FAILED)
|
103
|
+
Smailer::Models::FinishedMail.add(queue_item, Smailer::Models::FinishedMail::Statuses::FAILED, false)
|
104
|
+
finished_mails_counts[queue_item.mail_campaign.id] += 1
|
111
105
|
end
|
112
106
|
results.push [queue_item, :failed]
|
113
107
|
else
|
114
108
|
# great job, message sent
|
115
|
-
Smailer::Models::FinishedMail.add(queue_item, Smailer::Models::FinishedMail::Statuses::SENT)
|
109
|
+
Smailer::Models::FinishedMail.add(queue_item, Smailer::Models::FinishedMail::Statuses::SENT, false)
|
110
|
+
finished_mails_counts[queue_item.mail_campaign.id] += 1
|
116
111
|
results.push [queue_item, :sent]
|
117
112
|
end
|
118
113
|
end
|
119
114
|
|
115
|
+
finished_mails_counts.each do |mail_campaign_id, finished_mails_for_campaign|
|
116
|
+
Smailer::Models::MailCampaign.update_counters mail_campaign_id, :sent_mails_count => finished_mails_for_campaign
|
117
|
+
end
|
118
|
+
|
120
119
|
results
|
121
120
|
end
|
122
121
|
end
|
data/lib/smailer/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dimitar Dimitrov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -106,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
106
|
version: 1.3.6
|
107
107
|
requirements: []
|
108
108
|
rubyforge_project: smailer
|
109
|
-
rubygems_version: 2.2.
|
109
|
+
rubygems_version: 2.2.2
|
110
110
|
signing_key:
|
111
111
|
specification_version: 4
|
112
112
|
summary: A simple newsletter mailer for Rails.
|