1

質問するのは初めてですので、優しくしてください!

たくさんのドメイン(これまでのところ100以上)のコンテンツを処理するRailsアプリケーションがあります。各ドメインは、私のアプリがホストされている場所(興味がある場合は、Heroku)、またはアプリがホストされていた元の場所のいずれかを指します。ドメインの準備ができるたびに、アプリがコンテンツを提供できるように、herokuサーバーを指す必要があります。

ドメインが元の場所からアプリケーションに正常に切り替えられたかどうかを確認するために、ドメインに含まれている特別な非表示タグを探すスクリプトを作成しています。タグが見つかった場合、ドメインは私のアプリを指しています。そうでない場合は、変更されていません。これを記録します。

問題は、少なくとも1つのドメインで、スクリプトに対して404 OpenURI::HTTPError例外が発生することです。これは奇妙なことです。サイトに問題なくアクセスでき、curlを介してサイトを取得することもできるからです。作業サイトでこのようなエラーが発生する理由を誰かが知っていますか?重要なスニペットは次のとおりです。

require 'rubygems'
require 'open-uri'
require 'hpricot'
...
url = "http://www.#{domainname}.com"
doc = Hpricot(open(url)) #<---- Problem right here.
...

助けてくれてありがとう!

4

1 に答える 1

0

SOへようこそ!

これが私のデバッグ方法です:

  1. Hpricotを使用せずに、open-uriのみを使用してirbで複製できるかどうかを確認してください。

$ irb -rubygems -ropen-uri

>> open('http://www.somedomain.com')

  1. Herokuログを調べて、サーバーに接触していないかどうかを確認します。
  2. 元のサーバーのログで同じものを探します。
  3. Wiresharkのようなものを開いてHTTPトランザクションを確認し、404が実際に戻ってくるかどうかを確認します。

それから始めて、あなたの結果で戻ってきてください。

于 2009-11-19T20:29:49.227 に答える