Как регулярно отслеживать URL в SketchUp Ruby плагин?

Я пытаюсь регулярно отслеживать URL в SketchUp Ruby плагин..

Я ищу какой-то код, чтобы сделать эту функцию:

require 'ping' 
def every_n_seconds(n) 
    loop do 
        before= Time.now 
        yield 
        interval=n-(Time.now-before) 
        sleep(interval) if interval>0 
    end 
end 
every_n_seconds(50) do 
   pingresult=Ping.pingecho("www.google.com") 
   puts pingresult 
   if pingresult="true" 
        puts "t" 
    else 
        puts "f!" 
    end 
end

но в первой строке я получаю ошибку:

Ошибка загрузки: C:/Program Files (x86)/SketchUp/SketchUp 2013/Plugins/xxx.rb:3: в `require': такой файл не загружается - ping

Я хочу найти ping библиотека классов, но я ничего не нахожу..

так где я могу найти класс пинг или

Есть ли другой метод для достижения этой функции?

1 ответ

Что плохого в том, чтобы просто запустить пинг?

`ping -c 1 www.google.com`
if $?.exitstatus == 0
  puts "t"
else
  puts "f"
end

Или даже лучше:

def ping(url)
  `ping -c 4 #{url}`
  $?.exitstatus == 0
end

if ping("www.google.com")
  puts "t"
else
  puts "f"
end

Запуск в отдельном потоке:

def ping(url)
  `ping -c 4 #{url}`
  $?.exitstatus == 0
end

def every_n_seconds(n)
  loop do
    before= Time.now
    yield
    interval=n-(Time.now-before)
    sleep(interval) if interval>0
  end
end

ping_thread = Thread.new {
  every_n_seconds(50) do
    pingresult=ping("google.com")
    puts pingresult
    if pingresult
      puts "t"
    else
      puts "f!"
    end
  end
}

puts "Doing other things now..."

ping_thread.join()
Другие вопросы по тегам