File tree Expand file tree Collapse file tree 3 files changed +37
-5
lines changed Expand file tree Collapse file tree 3 files changed +37
-5
lines changed Original file line number Diff line number Diff line change
1
+ * Support the use of underscored symbols when registering interceptors and
2
+ observers like we do elsewhere within Rails.
3
+
4
+ * Andrew White*
5
+
1
6
* Add the ability to intercept emails before previewing in a similar fashion
2
7
to how emails can be intercepted before delivery, e.g:
3
8
Original file line number Diff line number Diff line change @@ -444,18 +444,31 @@ def register_interceptors(*interceptors)
444
444
end
445
445
446
446
# Register an Observer which will be notified when mail is delivered.
447
- # Either a class or a string can be passed in as the Observer. If a string is passed in
448
- # it will be <tt>constantize</tt>d .
447
+ # Either a class, string or symbol can be passed in as the Observer.
448
+ # If a string or symbol is passed in it will be camelized and constantized .
449
449
def register_observer ( observer )
450
- delivery_observer = ( observer . is_a? ( String ) ? observer . constantize : observer )
450
+ delivery_observer = case observer
451
+ when String , Symbol
452
+ observer . to_s . camelize . constantize
453
+ else
454
+ observer
455
+ end
456
+
451
457
Mail . register_observer ( delivery_observer )
452
458
end
453
459
454
460
# Register an Interceptor which will be called before mail is sent.
455
- # Either a class or a string can be passed in as the Interceptor. If a string is passed in
461
+ # Either a class, string or symbol can be passed in as the Interceptor.
462
+ # If a string or symbol is passed in it will be camelized and constantized.
456
463
# it will be <tt>constantize</tt>d.
457
464
def register_interceptor ( interceptor )
458
- delivery_interceptor = ( interceptor . is_a? ( String ) ? interceptor . constantize : interceptor )
465
+ delivery_interceptor = case interceptor
466
+ when String , Symbol
467
+ interceptor . to_s . camelize . constantize
468
+ else
469
+ interceptor
470
+ end
471
+
459
472
Mail . register_interceptor ( delivery_interceptor )
460
473
end
461
474
Original file line number Diff line number Diff line change @@ -530,6 +530,13 @@ def self.delivered_email(mail)
530
530
mail . deliver
531
531
end
532
532
533
+ test "you can register an observer using its symbolized underscored name to the mail object that gets informed on email delivery" do
534
+ ActionMailer ::Base . register_observer ( :"base_test/my_observer" )
535
+ mail = BaseMailer . welcome
536
+ MyObserver . expects ( :delivered_email ) . with ( mail )
537
+ mail . deliver
538
+ end
539
+
533
540
test "you can register multiple observers to the mail object that both get informed on email delivery" do
534
541
ActionMailer ::Base . register_observers ( "BaseTest::MyObserver" , MySecondObserver )
535
542
mail = BaseMailer . welcome
@@ -568,6 +575,13 @@ def welcome
568
575
mail . deliver
569
576
end
570
577
578
+ test "you can register an interceptor using its symbolized underscored name to the mail object that gets passed the mail object before delivery" do
579
+ ActionMailer ::Base . register_interceptor ( :"base_test/my_interceptor" )
580
+ mail = BaseMailer . welcome
581
+ MyInterceptor . expects ( :delivering_email ) . with ( mail )
582
+ mail . deliver
583
+ end
584
+
571
585
test "you can register multiple interceptors to the mail object that both get passed the mail object before delivery" do
572
586
ActionMailer ::Base . register_interceptors ( "BaseTest::MyInterceptor" , MySecondInterceptor )
573
587
mail = BaseMailer . welcome
You can’t perform that action at this time.
0 commit comments