Я пытаюсь определить методы для анализа файла журнала apache и вытащить IP-адреса, URL-адреса, запросы в час и коды ошибок. У меня есть все, что работает вне методов, но, пытаясь поместить этот код в методы, я продолжаю получать сообщение об ошибке «Уровень стека слишком глубокий». Вот этот код.Объявление переменной метода Ruby
class CommonLog
def initialize(logfile)
@logfile = logfile
end
def readfile
@readfile = File.readlines(@logfile).map { |line|
line.split()
}
@readfile = @readfile.to_s.split(" ")
end
def ip_histogram
@ip_count = 0
@readfile.each_index { |index|
if (@readfile[index] =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)
puts @readfile[index]
puts @ip_count += 1
end
}
end
def url_histogram
url_count = 0
cleaned_file.each_index { |index|
if (cleaned_file[index] =~ /\/{1}(([a-z]{4,})|(\~{1}))\:{0}\S+/)
puts cleaned_file[index]
puts url_count += 1
end
}
end
def requests_per_hour
end
def sorted_list
end
end
my_file = CommonLog.new("test_log")
cleaned_file = my_file.readfile
puts cleaned_file.ip_histogram
Ваш код слишком долго, ваше объяснение недостаточно. Что вы подразумеваете под «методами»? Вы имеете в виду методы HTTP или методы Ruby? Какая часть кода? Можете ли вы обрезать свой код, чтобы остался только соответствующий код? Кроме того, можете ли вы включить две-три строки выборки из вашего входного файла, чтобы мы могли сами проверить ваш код? – Amadan