問題タブ [open-uri]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1949 参照

ruby-on-rails - XML => Hpricot と Rails を使用した HTML

私は Web サービスや Rails を扱ったことはありませんが、これは明らかに学ぶ必要があることです。見栄えが良いので、hpricot を使用することにしました。とにかく、_why はhpricot の Web サイトで次の例を提供してくれました。

シンプルでエレガント、そして簡単に見えます。Ruby では問題なく動作しますが、私の質問は次のとおりです。これをレールで分割するにはどうすればよいですか?

これをすべて単一のコントローラーに追加して実験しましたが、ビューで呼び出す最良の方法を思いつきませんでした。

では、Web API から XML ファイルを解析し、Hpricot を使用してクリーンな HTML に出力する場合、アクティビティをモデル、ビュー、およびコントローラーに分割するにはどうすればよいでしょうか? また、何をどこに配置しますか?

0 投票する
4 に答える
21400 参照

ruby - open-uri で POST リクエストを行うにはどうすればよいですか?

open-uri で Ruby から POST リクエストを行うことはできますか?

0 投票する
1 に答える
4470 参照

ruby - RSpecとOpen-URISocketError/TimeoutErrorをモックアップするにはどうすればよいですか

Open-Uri open()がタイムアウトを呼び出すか、SocketErrorなどの例外を発生させると、期待どおりに処理していることを確認できるようにしたいと思いますが、これに問題があります。

これが私の仕様です(SocketErrorの場合):

そして、open-uriを使用しているオブジェクトの部分:

ただし、この状況では、仕様はnil.readエラーと同様に失敗します。

open()今週、この問題に遭遇したのは2回目です。前回、でラップするときにTimeoutErrorをシミュレートしようとしたときtimeout() {}に、あきらめて、クラスを開くことで実際のタイムアウトが発生しました。無効なURLを呼び出そうとすると、明らかにこれがSocketErrorをスローする可能性がありますが、RSpecを使用してこれをモックアウトする正しい方法があると確信しています

更新:私は明らかに、深夜にエラーが発生したのは、SocketErrorの後にURLを再試行したときであり、and_raise(SocketError)部分が正常に機能したことを明確に考えていませんでした。

0 投票する
3 に答える
9590 参照

ruby-on-rails - Ruby の open-uri の open が単体テストでは StringIO を返すのに、コントローラーでは FileIO を返すのはなぜですか?

ユーザーがアップロードした画像を A​​mazon S3 に保存する Rails 2.2.2 アプリを継承しました。attachment_fu ベースのPhotoモデルは、S3 と MiniMagick から画像を取得して回転を実行するrotateメソッドを提供します。open-uri

このrotateメソッドには、MiniMagick で使用する画像を取得する次の行が含まれています。

self.public_filenameのようなものを返します

画像を取得して回転させることは、運用中および開発中の実行中のアプリケーションで問題なく機能します。ただし、単体テストは失敗します

その理由は、単体テストのコンテキストでモデル メソッドが呼び出されると、画像データを含むオブジェクトopen(self.public_filename)が返されるためです。このオブジェクトのメソッドが戻っStringIOて爆発します。pathnilMiniMagick::Image.from_file

このまったく同じモデル メソッドが から呼び出されると、 は、eg という名前のファイルに関連付けられたインスタンスPhotosControlleropen(self.public_filename)返します。このファイルには画像データが含まれています。FileIO/tmp/open-uri7378-0

テスト環境と開発環境の違いが原因かと思い、開発環境でコンソールを立ち上げてみました。しかし、単体テストと同様に、ではなくopen('http://...')を返しました。StringIOFileIO

open-uri と関連するすべてのアプリケーション固有のコードをたどりましたが、違いの理由は見つかりません。

0 投票する
4 に答える
2703 参照

ruby - open-uri + hpricot & nokogiri が html を正しく解析しない

open-uri + hpricot を使用して Web ページを解析しようとしていますが、宝石が欲しいものをもたらさないため、解析プロセスに問題があるようです。

具体的には、このdiv (ID は'pasajes' ) をこの URLで取得したい:

http://www.despegar.com.ar

私はこのコードを書きます:

しかし、それは何ももたらしません!hpricot と nokogiri の両方で多くのことを試しました。

  1. そのdivへの絶対パスを指定してみます
  2. セレクターで CSS パスを試す
  3. hpricot 検索ショートカット (doc//"div#pasajes") で試してみます
  4. 「pasajes」divに到達するためのほぼすべての可能な相対パス

最後に、恐ろしい解決策を見つけました。私はwatirライブラリを使用し、Webブラウザを開いた後、htmlをhpricotに渡しました。このようにして、hpricot は 'pasajes' div を認識します。しかし、解析目的のためだけに Web ブラウザを開きたくありません...

私が間違っていることは何ですか?オープンウリの効きが悪い?プリコットですか?

0 投票する
6 に答える
22572 参照

ruby - Ruby の open-uri と Cookie

ある open-uri 呼び出しから Cookie を保存し、次の呼び出しに渡したいと思います。これを行うための適切なドキュメントが見つからないようです。正しい方法を教えていただけると助かります。
注: w3.org は実際の URL ではありませんが、より短いです。ここでクッキーが重要であるふりをします。

2つの反対の後に更新:これは修辞的な質問として意図されたものではありませんが、可能であることを保証します. タンブルウィードの後の更新: (答え) を参照してください、それは可能です。かなり時間がかかりましたが、うまくいきます。

0 投票する
2 に答える
783 参照

ruby-on-rails - RailsコントローラーのHpricotでのタイムアウトエラー

ねえ-私はdiggAPIを使用する基本的なRailsアプリを書いています。diggのAPIがhpricotで提供するxmlデータを解析しようとしていますが、ページをテストすると、最終的にTimeout::Error例外が発生するまでブラウザーがハングします。

コントローラのコードは次のとおりです。

そして、これがスタックトレースです:

Railsを学んでいるだけで、何が起こっているのか理解できません。なぜこれが起こっているのかについてのアイデアはありますか?

アップデート

ローカルに保存されたxmlファイルでまったく同じプロセスを試しましたが、完全に機能しました。問題は、open-uriとリモートxmlに関係している可能性があります。

0 投票する
2 に答える
7097 参照

ruby - latin1文字列をutf8に変換しますか?

latin1文字を含む文字列をutf8に変換するにはどうすればよいですか?

文字列は、open-uriによって開かれ、これらの特殊文字を含むドキュメントです。

よろしくお願いします

0 投票する
1 に答える
1510 参照

ruby - Rubyスクリプトの作業ページで404HTTPErrorを受信する

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

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

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

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

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