Открытое отслеживание не работает с Rails ahoy_email gem - PullRequest
0 голосов
/ 31 августа 2018

Я использую гем ahoy_email в Rails и не могу заставить работать простое открытое отслеживание, и я не знаю, как его отладить.

Запись сообщения генерируется при отправке электронного письма:

#<Ahoy::Message:0x000055592a4bd3a8
 id: 1,
 token: "AVKoHmuT0OxqaQRpMfNoDjzD3ibUltHL",
 to: "augusto@qounter.com",
 user_type: "User",
 user_id: 6,
 mailer: "UserMailer#welcome_email",
 subject: "Bienvendido al Sistema de Facturación de Megacentro",
 sent_at: Thu, 30 Aug 2018 21:35:44 UTC +00:00,
 opened_at: nil,
 clicked_at: nil,
 comprobante_id: nil>

Конфигурация моего хоста:

config.action_mailer.default_url_options = { host: 'megacentro.devtechperu.com' }

Отправленное письмо содержит скрытое изображение:

<body>
  ...
  <img alt=3D"" src=3D"http://megacentro.devtechperu.com/ahoy/messages/AVKo=
HmuT0OxqaQRpMfNoDjzD3ibUltHL/open.gif" width=3D"1" height=3D"1">
</body>
</html>

Но при открытии электронного письма поле Open_at остается ноль

Для отладки я скопировал и вставил соответствующий URL в браузер:

http://megacentro.devtechperu.com/ahoy/messages/AVKo=
HmuT0OxqaQRpMfNoDjzD3ibUltHL/open.gif

с https и без него на всякий случай

Я всегда получаю 204 ответа от сервера, что будет означать, что контроллер Ahoy не обрабатывает URL, поскольку в соответствии с кодом он должен отвечать gif.

Я использую Rails 5.2.1 и Ruby 2.5.1 на сервере Ubuntu 18.04.

это может быть ошибка в последней версии Rails? Любые указатели на отладку этого будут оценены.

Редактировать: просмотр журналов сервера подтверждает, что маршрут не используется:

I, [2018-08-30T22:11:57.320881 #6906]  INFO -- : [f0912842-0b2c-4314-889b-38d813f1ea24] Started GET "/ahoy/messages/AVKo=HmuT0OxqaQRpMfNoDjzD3ibUlt/open.gif" for 179.6.208.88 at 2018-08-30 22:11:57 +0000
I, [2018-08-30T22:11:57.321749 #6906]  INFO -- : [f0912842-0b2c-4314-889b-38d813f1ea24] Processing by ApplicationController#raise_not_found as GIF
I, [2018-08-30T22:11:57.321799 #6906]  INFO -- : [f0912842-0b2c-4314-889b-38d813f1ea24]   Parameters: {"unmatched_route"=>"ahoy/messages/AVKo=HmuT0OxqaQRpMfNoDjzD3ibUlt/open"}
D, [2018-08-30T22:11:57.608802 #6906] DEBUG -- : [f0912842-0b2c-4314-889b-38d813f1ea24]   User Load (78.3ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["id", 3], ["LIMIT", 1]]
D, [2018-08-30T22:11:57.609440 #6906] DEBUG -- : [f0912842-0b2c-4314-889b-38d813f1ea24] No route matches ahoy/messages/AVKo=HmuT0OxqaQRpMfNoDjzD3ibUlt/open
I, [2018-08-30T22:11:57.609619 #6906]  INFO -- : [f0912842-0b2c-4314-889b-38d813f1ea24] Completed 204 No Content in 288ms (ActiveRecord: 159.9ms)

Редактировать: этот маршрут отлично работает в разработке, но вызывает ActionController :: RoutingError в производстве. Отсюда 204, как я спасаюсь от этой ошибки с 204

1 Ответ

0 голосов
/ 31 августа 2018

Проблема оказалась в этих двух строках в моих маршрутах.rb:

get '*unmatched_route', to: 'application#raise_not_found' unless Rails.env == "development"
post '*unmatched_route', to: 'application#raise_not_found' unless Rails.env == "development"

, который я использую, чтобы перехватывать несоответствующие маршруты и спасать ошибки. Маршруты драгоценного камня никогда не были запущены в производство, поскольку первоклассный маршрут стартовал первым. Устранение этих проблем решило проблему.

...