- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用ActionMailer delivery_later w ActiveJobs/Sidekiq使用:
config.active_job.queue_adapter = :sidekiq
begin
MessageMailer.contact_me_email(@message).deliver_now
rescue Errno::ECONNREFUSED, Net::SMTPAuthenticationError, Net::SMTPServerBusy, Net::SMTPSyntaxError, Net::SMTPFatalError, Net::SMTPUnknownError => e
flash[:error] = "Problems sending mail. Please try again later"
# delete message or resend it ?
byebug
@message.destroy
format.html { render :new }
end
begin
MessageMailer.contact_me_email(@message).deliver_later(wait: 1.minute ) # in mailers queue
rescue Errno::ECONNREFUSED, Net::SMTPAuthenticationError, Net::SMTPServerBusy, Net::SMTPSyntaxError, Net::SMTPFatalError, Net::SMTPUnknownError => e
flash[:error] = "Problems sending mail. Please try again later"
# delete message or resend it ?
byebug
@message.destroy
format.html { render :new }
end
最佳答案
ActiveJobs允许您挽救使用rescue_from
方法执行作业时发生的错误。参见the api。您将需要在ActiveJob子类中实现此方法。
由于ActionMailer使用DeliveryJobs将消息作为作业传递,因此您需要在类中添加rescue_from方法来处理异常。
例如,您可以将其放置在config/initializers/action_mailer.rb
中:
ActionMailer::DeliveryJob.rescue_from(StandardError) do |exception|
Rails.logger.error "Original record not found: #{@serialized_arguments.join(', ')}"
end
spec/initializers/action_mailer_spec.rb
:
RSpec.describe 'ActionMailer::DeliveryJob error recovery' do
it 'should log the deserialization errors' do
@user = create(:user)
MyCustomMailer.send_something(@user).deliver_later
@user.destroy
expect(Rails.logger).to receive(:error).at_least(:once)
Delayed::Worker.new.work_off
end
end
关于ruby-on-rails-4 - Rails 4 ActionMailer-如何在使用deliver_later时捕获连接和SMTP错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32069520/
尝试使用delayed_job_active_record升级到Rails 4.2。我没有为测试环境设置delayed_job后端,因为我认为这样作业会立即执行。 我正在尝试使用 RSpec 测试新的
我有一个 Ruby on Rails 应用程序,我需要在面试前一天向申请人发送提醒邮件。为此,我计划使用 The Rescue Scheduler,我使用的是 rails v 4.2。我已经运行了 r
升级到 Rails 6 后,我注意到默认邮件程序的 .deliver_later与 Rails 5 中的工作方式不同。 配置: config.active_job.queue_adapter = :i
我正在尝试使用 Rails 4.2 的 Deliver_later 方法设置联系表格。但是,我只能让 Deliver_now 工作,因为 Deliver_later 试图序列化我的对象并且每次都失败。
我有一个非常基本的邮件设置如下发送交易邮件: class PayoutMailer < ApplicationMailer default from: 'hello@groundworkai.co
什么有效 我当前的 user_controller.rb 代码: def create u = User.new(create_user_params) . . . if u.sa
我有一个 Rails 应用程序,其中有一个功能可以发送很多电子邮件。我想以异步方式 的方式进行,并且我认为 deliver_later 方法可以做到这一点。目前,从用户单击 submit 到提交表单,
我的生产应用程序在 AWS 上运行,但在某些邮件程序上的事件作业 - deliver_later 有问题。我在开发中成功发送了所有带有 deliver_later 的电子邮件,但在生产中有些不同。某些
与 ActiveJob 交互的常见模式在 Rails 中是使用 perform() 设置作业通过 perform_now 异步调用的方法或 perform_laterMailers特殊情况可直接调用d
我是一名优秀的程序员,十分优秀!