Неопределенная ошибка маршрута (Rails)

Я вижу следующую ошибку:

Error message: undefined local variable or method `call_alert_path' for #<RoadrunnerTwilioAlert:0x007f34401bbd10>

Тем не менее, я чувствую, что call_alert_path правильно определен в маршрутах. Это подтверждается тем фактом, что мои тесты пройдены. Основное различие между тестовым режимом и производством состоит в том, что в производстве метод, который вызывает call_alert_path в асинхронной работе. Возможно, это сбрасывает... в любом случае, я просто хочу подтвердить сообществу, что call_alert_path в противном случае правильно определен и нет ничего плохого в написанном коде.

Код контроллера:

# calls async job in production
if Rails.env == "production"
  RoadrunnerTwilioAlert.new.async.perform(params[:rentalrequest_id])
else
  @alert = twilio_client.account.calls.create(
    from: ENV["Twilio_Verified_Phone"],
    to: ENV["Roadrunner_Phone"],
    url: call_alert_path,
    method: 'post'
  )
  @request.update_attributes(twilio_alert: "call")
end

Асинхронный код работы:

def perform(rentalrequest_id)
  @request = Request.find(id)
  @alert = twilio_client.account.calls.create(
    from: ENV["Twilio_Verified_Phone"],
    to: ENV["Roadrunner_Phone"],
    url: call_alert_path,
    method: 'post'
  )
  @request.update_attributes(twilio_alert: "call")
end

Маршрут:

match '/twilio/call_alert', to: 'twilio#call_alert', via: :post, as: "call_alert"

1 ответ

Помощники URL недоступны в работнике. Вместо этого передайте URL в качестве аргумента работнику:

def perform(rentalrequest_id, url)
  @request = Request.find(id)
  @alert = twilio_client.account.calls.create(
    from: ENV["Twilio_Verified_Phone"],
    to: ENV["Roadrunner_Phone"],
    url: url,
    method: 'post'
  )
  @request.update_attributes(twilio_alert: "call")
end
Другие вопросы по тегам