2015-04-01 23 views
5

wewnątrz kontrolera:Nie jest wywoływana metoda Mailera?

def update 
    @user.update({approved: true}) 
    UserMailer.send_approved_mail(@user) 
    redirect_to(root_url) 
end 

wewnątrz user_mailer.rb

class UserMailer < Devise::Mailer 
    def send_approved_mail(user) 
    @resource = user 
    email_body = render "user_activated_mail" 
    if @resource.valid? 
    client = Postmark::ApiClient.new(ENV["POSTMARK_API_KEY"]) 
    client.deliver(from: ENV["POSTMARK_SIGNATURE"], 
     to: @resource.email, subject: "User Activation information.", 
     tag: 'account-activated', :content_type => "text/html", 
     html_body: email_body) 
    end 
    end 
end 

w szynach 4.1.0 powyżej metody w kontrolerze jest nazywany i e-mail są wysyłane, ale w szynach 4,2 metodę mailera w kontrolerze nie jest wywoływany, ale po wywołaniu z konsoli szyn działa. Przygotowałem całą niezbędną konfigurację dla apletów APM i plików konfiguracyjnych. Jedyne, co się dzieje w szynie 4.1.0 w kontrolerze, zostaje wywołany wewnątrz kontrolera, ale w szynach 4.2 to działa, ale działa po wywołaniu z konsoli szyny. Jaki jest dokładny powód, którego naprawdę nie można zrozumieć.

Odpowiedz

5

zachowanie można zauważyć tutaj jest nowy domyślny wprowadzony w Rails 4.2:

Wraz z wprowadzeniem aktywnego zadania i #deliver_later ... wywołanie metod instancji (na program pocztowy) jest odroczone do czasu albo wywoływana jest opcja deliver_now lub dostawa_later.

Aby uzyskać więcej informacji, sprawdź numer Rails 4.2 upgrade guide.

Nie martw się jednak. Nadal możesz używać Postmark z ActionMailer. Interfejs official Postmark Rails gem zapewnia integrację z programem ActionMailer dla Postmark. Używając go, powinieneś być w stanie napisać swoje koperty tak, jakby były one zwykłymi programami pocztowymi Railsowymi bez potrzeby ręcznego zarządzania połączeniami Postmark w kodzie.

P.S. Pracuję w Wildbit (twórcy Postmark). W każdej chwili możesz skontaktować się z nami bezpośrednio.

+0

dzięki! temochka, na pewno będzie w kontakcie, jeśli wpadną na problemy. – codemilan