埋め込みが機能しない

いくつかの追加のデバッグ結果をお伝えします:

手動でトピックを作成し、JavaScript スニペット内の discourseEmbedUrl: 'http://localhost:3001/enlistments/<%= @enlistment.id %>'topicId: 14 に置き換えてみました。するとコメントが読み込まれました。これは CORS や X-Frame- の問題ではなく、(a) スクレイピングに関連する何か、そして (b) 埋め込み時のエラーハンドリングの問題である可能性を示唆しています。

スクレイピングの問題を調査するため、以前アクセスしたことがない新しいページに移動しました(そのため、そのページに対するスクレイピングは試行されていません)。アプリの Rails コンソールを観察しながらページをロードしました。ログに /enlistments/6 が 1 回表示されました。JavaScript コンソールでエラーメッセージが表示されるまで待機しましたが、その時点で Discourse がスクレイピングを試みるはずだったにもかかわらず、アプリの Rails コンソールにはそれ以上のアクセス試行のログは表示されませんでした。

Discourse の /logs エンドポイントにもエラーはなく、Discourse の Rails ログからも何も確認できませんでした。

Discourse が私のウェブサイトにアクセスできないのではないかと思い、Discourse アプリの Rails コンソールにログインして以下を実行しました:

± |master U:3 ?:2 ✗| → rails c
Loading development environment (Rails 6.0.3.3)
[1] pry(main)> require "net/http"
=> false
[2] pry(main)> url = URI.parse("http://localhost:3001/enlistments/6")
=> #<URI::HTTP http://localhost:3001/enlistments/6>
[3] pry(main)> req = Net::HTTP.new(url.host, url.port)
=> #<Net::HTTP localhost:3001 open=false>
[4] pry(main)> res = req.request_head(url.path)
4=> #<Net::HTTPOK 200 OK readbody=true>
[5] pry(main)>

この操作をしている間、アプリの Rails サーバーのアクセスログが表示されました。これにより、Discourse が私のアプリに到達できることが確認できました。

今は Sidekiq やジョブスケジューリングに問題があるのではないかと思っています🤷‍♂️ しかし、そのデバッグ方法がわかりません。Sidekiq を使ったことがないためです。

Redis データを再度確認しました(Redis に対応したデータベース GUI の TablePlus を使用)。keydefault:logster-env-96404aef1da0c422fc32e3bb82d85fbc のような値で、value が以下のような約 3 行のデータが表示されました:

[
  {
    "hostname": "myhostname",
    "process_id": 7188,
    "application_version": "60bc38e6a8914a10341a32ff9909e69faa65ffef",
    "params": {
      "embed_url": "http: //localhost:3001/enlistments/11927"
    },
    "HTTP_HOST": "localhost:3000",
    "REQUEST_URI": "/embed/comments?embed_url=http%3A%2F%2Flocalhost%3A3001%2Fenlistments%2F11927",
    "REQUEST_METHOD": "GET",
    "HTTP_USER_AGENT": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.60 Safari/537.36",
    "HTTP_ACCEPT": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
    "HTTP_REFERER": "http://localhost:3000/embed/comments?embed_url=http%3A%2F%2Flocalhost%3A3001%2Fenlistments%2F11927",
    "time": 1606253787041
  }
]

typeLIST で、ttl-1 です。これはジョブが開始されていることを意味するのでしょうか?

/sidekiq を調べてみましたが、このジョブに関する言及や RetrieveTopic という名前のキューは見当たりませんでした :frowning:

確かに範囲は狭まってきましたが、何か思い当たる節があればお手伝いいただきたいです!