Ruby中pingecho功能为何未找到?

更新于
2026-10-09 22:09:01
2阅读来源:SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计378个文字,预计阅读时间需要2分钟。

Ruby中pingecho功能为何未找到?

Ruby中通常使用`ping`或`pingecho`方法来检测网络连接。然而,由于某些原因(如模块冲突),有时这些方法可能会失效。以下是使用RVM管理不同Ruby版本时,尝试使用ping的示例:

bash使用RVM切换到1.8.7版本rvm use 1.8.7使用1.8.7版本的Ruby,ping 127.0.0.1ruby -rping -e 'p Ping.pingecho 127.0.0.1'切换到1.9.2版本rvm use 1.9.2使用1.9.2版本的Ruby,尝试ping(这里假设ping不是内置的,因此使用外部命令)ruby -e 'p `ping -c 1 127.0.0.1`'

Ruby过去常常使用Ping.pingecho方法,但似乎(和Ping模块)有时会消失:

% rvm use 1.8.7 Using ~/.rvm/gems/ruby-1.8.7-p334 % ruby -rping -e 'p Ping.pingecho "127.0.0.1"' true % rvm use 1.9.2 Using ~/.rvm/gems/ruby-1.9.2-p180 % ruby -rping -e 'p Ping.pingecho "127.0.0.1"' <internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- ping (LoadError) from <internal:lib/rubygems/custom_require>:29:in `require' % ruby -e 'p Ping.pingecho "127.0.0.1"' -e:1:in `<main>': uninitialized constant Object::Ping (NameError)

它移动到不同的库(所以我需要加载它吗?),或者
它已被删除,并替换为不同的模块(那么我应该用什么来确定IP是否可以访问?).

不知道为什么或在哪里消失了. Rails仍然有 Ping级.稍微适应(使用类方法)将是:

require 'timeout' require 'socket' class Ping def self.pingecho(host, timeout=5, service="echo") begin timeout(timeout) do s = TCPSocket.new(host, service) s.close end rescue Errno::ECONNREFUSED return true rescue Timeout::Error, StandardError return false end return true end end p Ping.pingecho("127.0.0.1") #=> true p Ping.pingecho("localhost") #=> true

Ruby中pingecho功能为何未找到?

本文共计378个文字,预计阅读时间需要2分钟。

Ruby中pingecho功能为何未找到?

Ruby中通常使用`ping`或`pingecho`方法来检测网络连接。然而,由于某些原因(如模块冲突),有时这些方法可能会失效。以下是使用RVM管理不同Ruby版本时,尝试使用ping的示例:

bash使用RVM切换到1.8.7版本rvm use 1.8.7使用1.8.7版本的Ruby,ping 127.0.0.1ruby -rping -e 'p Ping.pingecho 127.0.0.1'切换到1.9.2版本rvm use 1.9.2使用1.9.2版本的Ruby,尝试ping(这里假设ping不是内置的,因此使用外部命令)ruby -e 'p `ping -c 1 127.0.0.1`'

Ruby过去常常使用Ping.pingecho方法,但似乎(和Ping模块)有时会消失:

% rvm use 1.8.7 Using ~/.rvm/gems/ruby-1.8.7-p334 % ruby -rping -e 'p Ping.pingecho "127.0.0.1"' true % rvm use 1.9.2 Using ~/.rvm/gems/ruby-1.9.2-p180 % ruby -rping -e 'p Ping.pingecho "127.0.0.1"' <internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- ping (LoadError) from <internal:lib/rubygems/custom_require>:29:in `require' % ruby -e 'p Ping.pingecho "127.0.0.1"' -e:1:in `<main>': uninitialized constant Object::Ping (NameError)

它移动到不同的库(所以我需要加载它吗?),或者
它已被删除,并替换为不同的模块(那么我应该用什么来确定IP是否可以访问?).

不知道为什么或在哪里消失了. Rails仍然有 Ping级.稍微适应(使用类方法)将是:

require 'timeout' require 'socket' class Ping def self.pingecho(host, timeout=5, service="echo") begin timeout(timeout) do s = TCPSocket.new(host, service) s.close end rescue Errno::ECONNREFUSED return true rescue Timeout::Error, StandardError return false end return true end end p Ping.pingecho("127.0.0.1") #=> true p Ping.pingecho("localhost") #=> true

Ruby中pingecho功能为何未找到?