rubyでhttpメソッドが使えないエラーが発生する

このQ&Aのポイント
  • rubyのバージョン1.8.7で、MacOSX10.6.8の環境で、httpメソッドを使用する際にエラーが発生します。
  • 具体的には、Netモジュールのhttpメソッドが定義されていないというエラーが出ています。
  • このエラーの原因としては、古いバージョンのrubyを使用していることが考えられます。
回答を見る
  • ベストアンサー

httpメソッドが使えない

下記の内容のruby を実行したのですが、エラーが出てしまいます。 ---- require 'net/http' req = Net::HTTP::Get.new('/') Net::http.start('twitter.com') do |http| res = http.request(req) print res.body end ---- エラーメッセージ undefined method `http' for Net:Module (NoMethodError) ruby はver 1.8.7, 環境はMacOSX10.6.8です。 原因をご存知の方がいらっしゃいましたら、教えていただけないでしょうか? よろしくお願い致します。

  • stripe
  • お礼率89% (1568/1752)
  • Ruby
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • sholmes
  • ベストアンサー率81% (89/109)
回答No.1

Net定数→HTTP定数と辿りたい状態なので、まずは3行目の「Net::http」を「Net::HTTP」にしてください とりあえず今出ている例外は収まるはずです。 <おまけ> Rubyの「::」は、名前空間を辿る事とメソッドへのアクセス両方に用いる事が出来てしまいます。 間違えたときに文法エラーとなってくれないのが嫌らしいので、頭の片隅に入れておいて下さい とはいえ、通常は次のように使い分けます。 メソッド呼び出し: 「.」 名前空間: 「::」

stripe
質問者

お礼

sholmes 様、 ご回答ありがとうございました。 ご指示通りに修正しましたら、ぶじ動きました。 大変勉強になりました!感謝いたします。

関連するQ&A

  • RubyのDateクラスのメソッドが見つからない

    先日よりRubyでのプログラミングを始めてみたのですが DateクラスのDate::MOTHNAMESを参照しようとしたところ undefined method `MOTHNAMES' for Date:Class (NoMethodError) と返ってきてしまいました。 ほかにもDate::exist?メソッドもためしてみましたが、同じ様なコメントが 返ってきました。 undefined method `exist?' for Date:Class (NoMethodError) なお、 Date.newなどはつかえています どういった問題でどのように解決すれば良いのか、ご教示願えればと思います。 バージョンは ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0] で、Mac OSX Lionで動かしています。

  • mechanize のsearch methodについて

    現在Rubyを勉強しているものです。 webページの情報を自動的に取得して、メールの送信をおこなう というプログラムを組んでいます。 Mechanizeを利用すれば可能であることがわかったのですが、 サンプルコードを実行してみたところ、 ./www/mechanize/page.rb:97:in `forms': undefined method `search' for nil:NilClass (NoMethodError) というエラーが発生してしまいます。 その他のコードや、linux環境でも試しましたが同様でした。 どなたかお分かりの方教えていただければと思います。

  • Perlで言う、LWP HTTPをPHPで

    PerlでのスクリプトをPHPに移行しようかと考えております。(勉強のため) それで、PerlのモジュールでいうLWPとHTTPに代わるクラスライブラリ(API)は、どれにあたるのでしょうか? 具体的には、LWP::UserAgentとHTTP::Requestです。 ※詳しくは、 my $wa = new LWP::UserAgent; my $req = new HTTP::Request(GET => $url); my $res = $wa->request($req); PHPのドキュメント(http://www.php.net/manual/ja/)を見たのですが、いまいちピンときませんでした。 参考URLで結構ですので、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ruby undefined method

    class Hoge def body "aaa" end end def up(arg) arg.upcase end res=Hoge.new res.body = up(res.body) puts res.body 上記を実行すると、undefined method `body=' for #<Hoge:0x2b36454> (NoMethodError) になります。 最後の2行を以下のように変えるとうまく動作します。 tmp=res.body tmp = up(tmp) puts tmp この理由が理解できません。 説明して頂けませんか?

  • ローカルでは動くがサーバーでは動かない・・・

    メールを配信するCGIがあります。 フォームで登録するようになっているのですが、フォームで登録した際に、御礼のメールを配信したいと思って下記のようなphpを作っています。 フォームから送信されたデータを受け取り、送信者にメールを送った後、別のCGI(perl)にPOST送信するphpを作っています。 ローカルに作ったphp環境では動いたのですが、サーバーにアップロードすると下記のエラーが出て動きませんでした。 エラーメッセージ Warning: main(HTTP/Request.php): failed to open stream: No such file or directory in /home/*****/public_html/cgi/********/mail.php on line 34 メールを送信する部分は特に問題なく動いているみたいで問題はほかのcgiにPOST送信する部分にあるみたいです。初心者なのであるHPに掲載されていたコードをまる写しして必要な部分だけ変更しただけで、あまり意味は分からないままです。 /*POST送信*/ require_once "HTTP/Request.php"; $req =& new HTTP_Request("http://www.***.jp/******/cgi/**********/cgi-bin/*****.cgi"); $req->setMethod(HTTP_REQUEST_METHOD_POST); $req->addPostData("mail", "$mail"); $req->addPostData("md", "*****"); $req->addPostData("id", "**************"); if (!PEAR::isError($req->sendRequest())) { $response1 = $req->getResponseBody(); } else { $response1 = ""; } エラーメッセージにある34行目というのは require_once "HTTP/Request.php"; なのですが、どこに問題があるのでしょうか?

    • 締切済み
    • PHP
  • Array (NoMethodError)

    リンク先コードをcodepadで試したら下記エラーになりました。 エラーを消すにはどうすればよいでしょうか? Line 3:in `percentile_rank': undefined method `count' for [0, 20, 40, 60, 80, 100]:Array (NoMethodError) from t.rb:11 ▽Ruby - パーセンタイル順位   http://www40.atwiki.jp/spellbound/pages/2092.html

    • ベストアンサー
    • Ruby
  • doHeadメソッドを使いたい

    訳あって、doHeadメソッドを使ったサーブレットを作りたいのですが、 例題が無くて困っています。 いろいろ調べても、doHeadの説明は 「ヘッダだけを返す」 と書いてあるだけで、 ほとんどは実際の使用例になるとdoGetを使ったものになってしまっています。 doHeadを使う単純なサーブレットはどのように書いたらいいのでしょう? 何も表示しなくてもエラーさえ出なければかまいません。 public class HellodoHead extends HttpServlet{   public void doHead(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{   } } ためしにこのように何も記述しないで見たのですが、 HTTP Status 405 - HTTP の GET メソッドはこの URL ではサポートされていません。 というエラーです。 dogetメソッドが無いのに、GETリクエストを送った、ということらしいのですが、 ではheadリクエストのみを送ることはできるのでしょうか? 思いついたことがあれば何でもいいので、 回答いただけると助かります。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • PEAR HTTP_Requestでのヘッダ送信

    PEARのHTTP_Requestを使用し、 下記処理にてTEST_URL向けにPOSTとヘッダを同時に送信する処理を行いたいのですが 411 Length Requiredで返ってきてしまします。 サーバのログには Invalid URI in request Connection: Keep-Alive というログがerrorログに出ています。 そこでRFCを読んで見ると、 転送コーディングが施されていない場合は Content-Length ヘッダは送られなければならないが、 メッセージボディ中のオクテット数と 正確に一致しなければならないとの記載がありました。 ここに引っかかっているのかもと思い対策しようと思いましたが メッセージボディのlength(下記の☆部分)をどのように拾うかがわかりません。 require_once "HTTP/Request.php"; $req = &new HTTP_Request(TEST_URL,array()); $req->setURL(TEST_URL); $req->setMethod(HTTP_REQUEST_METHOD_POST); $req->addHeader('Host',"test.hogehoge.jp\r\n"); $req->addHeader('Content-Length',"-☆-\r\n"); $req->addHeader('Connection', "Keep-Alive\r\n"); $req->addHeader('User-Agent',"TEST ABCDEFG\r\n"); $req->addPostData('TEST_POST', 'testnano'); $result = $req->sendRequest(); if(PEAR::isError($result)) { echo $result->getMessage(); echo "<br />"; } else { echo $req->getResponseCode(); echo "<br />"; echo $req->getResponseBody(); echo "<br />"; } もしかして違う原因でしょうか? よろしくおねがいします。

    • 締切済み
    • PHP
  • web文書を取得するプログラムのサイト内での不具合について

    perl初心者です。 自分のwebサイトのコードを取得するプログラムをつくろう と思っているのですが、下のコード -------------------------------------------------------- #!/usr/local/bin/perl use LWP::UserAgent; use HTTP::Request; use HTTP::Response; our $URL = 'http://www.google.co.jp/'; # アクセスする URL my $proxy = new LWP::UserAgent; my $req = HTTP::Request->new('POST' => $URL); # HTTP リクエストを作成 my $res = $proxy->request($req); # $res に HTTP レスポンスが返ってくる print $res->content; # HTML を表示 1; --------------------------------------------------------------- でターゲットのurlが上のgoogleだと取得できるんですが 自サイトのurl'http://○○.××.△△.com/'だと 500 Internal Server Errorとなってしまいます。 因みにレンタルサーバーを利用しています。 サーバーでは技術的な質問は受け付けてないとの事なので、 スクリプトの質問とは少しズレますが分る方がいましたら ご教えていただきたく質問いたしました。

  • CGIの接続エラー

    PerlのLWP::UserAgentを使った接続で,エラーが生じてしまいます. ローカルからなら期待通りにページ内容を取得できるのですが,サーバに配置してブラウザからアクセスするとInternal Server Errorとなります. プロキシは使っていません.ファイアウォールやセキュリティソフトを切ってもエラーが生じてしまいます. 対象URL(下のコードではhttp://wikipedia.simpleapi.net/api?keyword=YouTube&output=xml)を変えても同じ結果になります. 理由がわかる方がいらっしゃればご教授願います. CGIにPerl5,サーバにApache Tomcat 5.5を利用しています. エラー内容とコードは下のようになっています. エラー内容 「500 Can't connect to wikipedia.simpleapi.net:80 (Bad hostname 'wikipedia.simpleapi.net')」 コード #!/usr/local/bin/perl use LWP::UserAgent; print "Content-type: text/plain\n\n"; my $ua = LWP::UserAgent->new; $ua->agent("Mozilla/5.0"); my $req = HTTP::Request->new(GET => "http://wikipedia.simpleapi.net/api?keyword=YouTube&output=xml"); my $res = $ua->request($req); $res = $ua->request($req); my $content = $res->content; print $content; exit;

専門家に質問してみよう