【问题标题】:Open tracking not working with Rails ahoy_email gem打开跟踪不适用于 Rails ahoy_email gem
【发布时间】:2018-08-30 22:07:15
【问题描述】:

我在 Rails 中使用 ahoy_email gem,我无法进行简单的打开跟踪工作,我不知道如何调试它。

发送邮件时正在生成消息记录:

#<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>

但是当打开邮件时,opened_at 字段保持为 nil

为了调试,我已将相应的 URL 复制粘贴到浏览器中:

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

有和没有 https 以防万一

我总是从服务器收到 204 响应,这意味着 Ahoy 控制器没有处理 url,因为根据代码它应该以 gif 响应。

我在 Ubuntu 18.04 服务器中使用 Rails 5.2.1 和 Ruby 2.5.1。

这可能是最新 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 从这个错误中解救出来

【问题讨论】:

    标签: ruby-on-rails email ruby-on-rails-5 ahoy


    【解决方案1】:

    问题原来是我的 routes.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"
    

    我用它来捕获不匹配的路由并挽救错误。由于无与伦比的路线首先启动,宝石的路线从未在生产中受到影响。删除这些解决了问题。

    【讨论】:

      猜你喜欢
      • 2021-02-03
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多