Может быть, что-то вроде этого:
log_snapshot.each_with_index.reverse_each do |line, n|
case (line)
when /authorization:/
puts '%d: %s' % [ n + 1, line ]
end
end
Где each_with_index
используется для генерации нумерованных номеров строк. Я переключился на стиль case
, чтобы вы могли иметь больше гибкости в подборе различных условий. Например, вы можете добавить флаг /i
, чтобы действительно легко сопоставить регистр, или добавить \A
в начале, чтобы закрепить его в начале строки.
Еще одна вещь, которую стоит рассмотреть для использования метода блока для File.open
, например:
File.open(args[:apache_access_log], "r") do |f|
f.readlines.each_with_index.reverse_each do |line, n|
# ...
end
end
Где это устраняет необходимость явного вызова close
. Конец блока закрывает его для вас автоматически.