zendesk-ar_mailer 2.1.5 → 2.1.6
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/lib/action_mailer/ar_sendmail.rb +12 -0
- data/test/test_arsendmail.rb +34 -0
- metadata +17 -5
@@ -395,6 +395,10 @@ class ActionMailer::ARSendmail
|
|
395
395
|
@failed_auth_count = 0
|
396
396
|
until emails.empty? do
|
397
397
|
email = emails.shift
|
398
|
+
if locking_enabled?
|
399
|
+
next unless email.lock_with_expirey
|
400
|
+
end
|
401
|
+
|
398
402
|
begin
|
399
403
|
res = session.send_message email.mail, email.from, email.to
|
400
404
|
hdr = ''
|
@@ -422,6 +426,10 @@ class ActionMailer::ARSendmail
|
|
422
426
|
[email.id, e.message, e.class, e.backtrace.join("\n\t")]
|
423
427
|
session.reset
|
424
428
|
end
|
429
|
+
|
430
|
+
if locking_enabled?
|
431
|
+
email.unlock
|
432
|
+
end
|
425
433
|
end
|
426
434
|
end
|
427
435
|
rescue Net::SMTPAuthenticationError => e
|
@@ -437,6 +445,10 @@ class ActionMailer::ARSendmail
|
|
437
445
|
# ignore SMTPServerBusy/EPIPE/ECONNRESET from Net::SMTP.start's ensure
|
438
446
|
end
|
439
447
|
|
448
|
+
def locking_enabled?
|
449
|
+
@locking_enabled ||= ActionMailer::Base.email_class.instance_methods.include?('lock_with_expirey')
|
450
|
+
end
|
451
|
+
|
440
452
|
##
|
441
453
|
# Prepares ar_sendmail for exiting
|
442
454
|
|
data/test/test_arsendmail.rb
CHANGED
@@ -514,6 +514,40 @@ Last send attempt: Thu Aug 10 11:40:05 %s 2006
|
|
514
514
|
assert_equal "error sending email 1: \"timed out\"(Timeout::Error):\n\tone\n\ttwo\n\tthree\n", strip_log_prefix(err)
|
515
515
|
end
|
516
516
|
|
517
|
+
def test_deliver_without_locking
|
518
|
+
email = Email.create :mail => 'body', :to => 'to', :from => 'from'
|
519
|
+
assert_equal false, @sm.locking_enabled?
|
520
|
+
out, err = capture_io do
|
521
|
+
@sm.deliver([ email ])
|
522
|
+
end
|
523
|
+
|
524
|
+
assert_equal 1, Net::SMTP.deliveries.length
|
525
|
+
end
|
526
|
+
|
527
|
+
def test_deliver_with_locking_acquired
|
528
|
+
email = Email.create :mail => 'body', :to => 'to', :from => 'from'
|
529
|
+
Email.any_instance.stubs(:lock_with_expirey).returns(true)
|
530
|
+
Email.any_instance.expects(:unlock)
|
531
|
+
assert_equal true, @sm.locking_enabled?
|
532
|
+
out, err = capture_io do
|
533
|
+
@sm.deliver([ email ])
|
534
|
+
end
|
535
|
+
|
536
|
+
assert_equal 1, Net::SMTP.deliveries.length
|
537
|
+
end
|
538
|
+
|
539
|
+
def test_deliver_with_locking_not_acquired
|
540
|
+
email = Email.create :mail => 'body', :to => 'to', :from => 'from'
|
541
|
+
Email.any_instance.stubs(:lock_with_expirey).returns(false)
|
542
|
+
Email.any_instance.expects(:unlock).never
|
543
|
+
assert_equal true, @sm.locking_enabled?
|
544
|
+
out, err = capture_io do
|
545
|
+
@sm.deliver([ email ])
|
546
|
+
end
|
547
|
+
|
548
|
+
assert_equal 0, Net::SMTP.deliveries.length
|
549
|
+
end
|
550
|
+
|
517
551
|
def test_do_exit
|
518
552
|
out, err = capture_io do
|
519
553
|
assert_raises SystemExit do
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zendesk-ar_mailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 7
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 2
|
8
|
+
- 1
|
9
|
+
- 6
|
10
|
+
version: 2.1.6
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Eric Hodel
|
@@ -11,7 +17,7 @@ autorequire:
|
|
11
17
|
bindir: bin
|
12
18
|
cert_chain: []
|
13
19
|
|
14
|
-
date:
|
20
|
+
date: 2010-07-26 00:00:00 -07:00
|
15
21
|
default_executable: ar_sendmail
|
16
22
|
dependencies: []
|
17
23
|
|
@@ -56,21 +62,27 @@ rdoc_options:
|
|
56
62
|
require_paths:
|
57
63
|
- lib
|
58
64
|
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
59
66
|
requirements:
|
60
67
|
- - ">="
|
61
68
|
- !ruby/object:Gem::Version
|
69
|
+
hash: 3
|
70
|
+
segments:
|
71
|
+
- 0
|
62
72
|
version: "0"
|
63
|
-
version:
|
64
73
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
65
75
|
requirements:
|
66
76
|
- - ">="
|
67
77
|
- !ruby/object:Gem::Version
|
78
|
+
hash: 3
|
79
|
+
segments:
|
80
|
+
- 0
|
68
81
|
version: "0"
|
69
|
-
version:
|
70
82
|
requirements: []
|
71
83
|
|
72
84
|
rubyforge_project: seattlerb
|
73
|
-
rubygems_version: 1.3.
|
85
|
+
rubygems_version: 1.3.7
|
74
86
|
signing_key:
|
75
87
|
specification_version: 3
|
76
88
|
summary: A two-phase delivery agent for ActionMailer
|