Во-первых, я бы изменил регистратор для создания разных файлов журналов каждый день.Таким образом, вы можете анализировать весь файл журнала, не беспокоясь о том, чтобы дважды нажать на одну и ту же строку.Вы можете сделать это, добавив это в ваш production.rb
файл:
config.logger = Logger.new(config.paths.log.first, 'daily')
Затем вы можете просто написать небольшой Ruby-файл, который запускается на задании cron вскоре после полуночи.Вот идея:
hits = Hash.new(0)
yesterday = Time.now - (24 * 60 * 60)
yesterday_formatted = yesterday.strftime("%Y%m%d") # 20110126
File.open("production.log.#{yesterday_formatted}", "r") do |infile|
while (line = infile.gets)
match = /(GET|POST) (\S+)/.match(line)
hits[match[2]] += 1 if match
end
end
hits.each do |page, count|
# Record number of hits for this page in the database
end
Однако я думаю, что было бы проще использовать Google Analytics или что-то в этом роде.