Я имею в виду Agile веб-разработки с Rails издание 4-го издания. Я создал два уведомления по электронной почте сначала для подтверждения заказа, второй для отправленного заказа. Теперь я хочу добавить задержку в 5 минут после отправки пользователю «подтверждения заказа», а затем отправить второй адрес отправленного заказа. В настоящее время у меня есть два файла, скажите, какие изменения следует внести, чтобы добавить требуемую задержку.Как добавить задержку перед отправкой электронной почты?
Заранее спасибо.
orders_controller.rb
def create
@order = Order.new(params[:order])
@order.add_line_items_from_cart(current_cart)
respond_to do |format|
if @order.save
Cart.destroy(session[:cart_id])
session[:cart_id] = nil
OrderNotifier.received(@order).deliver
#Mail after 5 miutes to inform order is Shipped
OrderNotifier.delay.shipped(@order)
format.html { redirect_to store_url, notice: I18n.t('.thanks') }
format.json { render json: @order, status: :created, location: @order }
else
@cart = current_cart
format.html { render action: "new" }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
order_notifier.rb
class OrderNotifier < ActionMailer::Base
default from: 'sam ruby <[email protected]>'
def received(order)
@order = order
mail to: order.email, subject: 'Pragmatic Store Order Confirmation'
end
def shipped(order)
@order = order
mail to: order.email, subject: 'Pragmatic Store Order Shipped'
end
handle_asynchronously :shipped, :run_at => Proc.new { 5.minutes.from_now }
end
Я сделал вышеуказанные изменения в мой код,
Это поднять ошибку с рабочими местами рек: работа
[Worker(pid:8300)] Starting job worker [Worker(pid:8300)] Job OrderNotifier#shipped_without_delay (id=31) RUNNING [Worker(pid:8300)] Job OrderNotifier#shipped_without_delay (id=31) FAILED (0 prior attempts) with NoMethodError: undefined method
[]' for nil:NilClass [Worker(id:8300)] 1 jobs processed at 1.5796 j/s, 1 failed [Worker(pid:8300)] Job OrderNotifier#shipped_without_delay (id=31) RUNNING [Worker(pid:8300)] Job OrderNotifier#shipped_without_delay (id=31) FAILED (1 prior attempts) with NoMethodError: undefined method
[]' for nil:NilClass [Worker(pid:8300)] 1 jobs processed at 6.3007 j/s, 1 failed