- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ping送信プログラムについて)
ping送信プログラムのエラー
このQ&Aのポイント
- ping送信プログラムを実行するとuninitialized constant Ping (NameError)というエラーが発生します
- requireが未定義というエラーメッセージが表示されます
- 使用しているRubyバージョンは1.91です
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
pingライブラリは、ICMP echoを送るものでもなく単にソケットを開いてみるだけのものということもあって、Ruby 1.9では削除されました。 このため、通常であればrequire 'ping'に失敗するところですが、今回はたまたまスクリプトがping.rbという名前のため自分自身をrequireしています。requireされたping.rbの中で、既にping.rbはrequireずみのため1行目はスキップします。4行目に到達した時点で、ここまでのどこでもPingなどという定数は定義されていないため、例外が発生します。 対策としては、Ruby 1.8に含まれていない上に実装も適当なpingライブラリではなく、他の手段を使うということが考えられます。 * システムのpingコマンドをKernel.systemで利用する * 開いているtcp portを特定できるなら、TCPSocketで開いてみて例外を捕えてみる。
お礼
回答ありがとうございます。 なるほど・・・。なぜrequire 'ping'でping.rbがでてくるのかよくわかりませんが、きっとそういうものなんでしょう。 「* システムのpingコマンドをKernel.systemで利用する」の方向で頑張ってみます。Kernelモジュールは持っている入門書にも少し出ているので出来そうな気がします。 yuguiさんのような有名人に回答していただき、なんだかテンションがあがりました。早く世界線航跡蔵の技術ネタが理解できるようにがんばります。 yuguiさんもお体に気をつけてがんばってください。