Ruby中pingecho功能为何未找到?
- 内容介绍
- 文章标签
- 相关推荐
本文共计378个文字,预计阅读时间需要2分钟。
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是否可以访问?).
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
本文共计378个文字,预计阅读时间需要2分钟。
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是否可以访问?).
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

