Задать вопрос
@sergeyxx12xx

Проблема с оператором system в ruby?

1 #ruby
2 #url = gets.chomp.to_s
3 url = "mail.ru"
4 qa = system "curl -Is #{url} |head -n1 | grep -Eo '[0-9]{3,3}'"
5 if (200 <= qa and qa <= 299)
6 puts 'OK'
7 elsif (300 <= qa and qa <= 399)
8 puts 'redirect'
9 elsif (400 <= qa and qa <= 499)
10 puts 'Error Client'
11 elsif (500 <= qa and qa <= 599)
12 puts 'Server Error'
13 elsif (qa != 0-9 or qa <= 600 or 199 <= qa)
14 puts 'Time OUT'
15 end

Вывод:

ruby test.na.dostupnost
302
test.na.dostupnost:5:in `<=': comparison of Fixnum with true failed (ArgumentError)
from test.na.dostupnost:5:in `'
  • Вопрос задан
  • 126 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@unabl4
ruby on rails web dev
system не возвращает результат исполнения команды. В твоем случае она просто возвращает TRUE все время.
Если хочешь выполнять команду и возвращать результат ее исполнения, то пользуйся вот этим: ruby-doc.org/core-2.3.0/Kernel.html#method-i-60

url = gets.chomp.to_s 
qa  = `curl -Is #{url} |head -n1 | grep -Eo '[0-9]{3,3}'`.to_i

case qa
when 200..299 then puts 'OK'
when 300..399 then puts 'Redirect'
when 400..499 then puts 'Client Error'
when 500..599 then puts 'Server Error'
else 
	if qa != 0-9 || qa <= 600 || 199 <= qa
		puts 'Timeout'
	else
		puts 'Unknown error occurred'
	end
end
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы