He estado tratando de encontrar la forma de enviar correo diferido utilizando el método de trabajo retardado con carriles 3. He intentado casi todas las combinaciones de posibilidades posibles que se me ocurren - Puedo hacer que el correo se ejecute en segundo plano, simplemente no puedo retrasar el envío a un tiempo futuro. La tabla delayed_jobs en el PP borra las tareas, el registro dice 'enviado', el procesador de tareas delayed_job recoge la tarea & dice enviados sin fallo ... pero el correo es o bien:Rails 3/delayyed_job - Se busca: Ejemplo básico de correo retrasado
- enviaron inmediatamente o
- simplemente no llega
si intento enviarlo en el futuro.
Si alguien pudiera ofrecer un ejemplo escueto de una barandilla 3 de trabajo retardado que envía correo en el futuro, estaría muy agradecido. Estoy seguro de que mucha gente hace esto, así que sospecho que me estoy perdiendo algo obvio. Uno (de un sinnúmero) combinaciones He tratado a continuación:
delayed_job: 2.1.2 rieles: 3.0.3 actionmailer: 3.0.3
controlador:
class TestmailerController < ApplicationController
def index
Testmailer.delay.test_mail
end
end
Mailer:
class Testmailer < ActionMailer::Base
def test_mail
mail(:to => '([email protected]', :from => '(removedforprivacy)@gmail.com', :subject => 'Testing Delayed Job', :content_type => 'text/plain').deliver
end
handle_asynchronously :test_mail, :run_at => Proc.new { 2.minutes.from_now }
end
parte electrónico correspondiente de config/ambientes/development.rb:
# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = true
# Print deprecation notices to the Rails logger
config.active_support.deprecation = :log
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "gmail.com",
:user_name => "(removedforprivacy)",
:password => "(removedforprivacy)",
:authentication => "plain",
:enable_starttls_auto => true
}
comando de empleo:
rake jobs:work
¿sabes cómo lograr esto sin el método de demora. Quiero usar el método handle_async ... Me gusta poder hacer que un método se demore en todos los lugares llamados, en lugar de cambiar a todos los que llaman. – baash05