Sign in

Зарегистрируйтесь, чтобы стать полноправным участником сообщества Masterpro.ws.

Веб-аналитика on Rails

Рассмотрим некоторые возможности использования веб-аналитики Ahoy - Simple, powerful, first-party analytics for Rails - на своем сайте "на рельсах", т.е. фреймворке Ruby on Rails.

Веб-аналитика. Ahoy - Simple, powerful, first-party analytics for Rails

 

Практический пример реализации, ряд живых диаграмм (Highcharts), отражающих аспекты визитов за последний месяц - возможно увидеть в этом blog on rails по ссылке, открыв страничку Analytics (легко найдете в топ-меню):

 

Взглянуть Blog on Rails на Heroku.

Увидеть на гитхабе.

 

Итак, формируем статистику по странам:

 

@locations = Ahoy::Visit.all.group(:country).count

 

, заменяя, при необходимости, nil на строку:

 

@locations = Ahoy::Visit.all.group(:country).count.map { |k, v| [k ||= 'undefined', v] }

 

Все то же самое относительно группировки по городам:

 

Ahoy::Visit.all.group(:city).count

 

, ну, или как посчитаете нужным; следующие фрагменты кода вполне прозрачно прояснят ситуацию:

 

@visits = Ahoy::Visit.all
@events = Ahoy::Event.all

 

<% @visits.each do |visit| %>
  Visit Number: <%= visit.id %><br>
  Visit Token: <%= visit.visit_token %><br>
  Visitor Token: <%= visit.visitor_token %><br>
  IP: <%= visit.ip %><br>
  User Agent: <%= visit.user_agent %><br>
  Referrer: <%= visit.referrer %><br>
  Referring domain: <%= visit.referring_domain %><br>
  Device Type: <%= visit.device_type %><br>
  Country: <%= visit.country %><br>
  Region: <%= visit.region %><br>
  City: <%= visit.city %><br>
  Latitude: <%= visit.latitude %><br>
  Longitude: <%= visit.longitude %><br>
  User ID: <%= visit.user_id %><br>
<% end %>

 

Вы можете пробовать любые группировки, селекты и итерации, например:

 

@events = Ahoy::Event.group("time::date").select("time::date as date, count(1) as count").map{|k| [k.date, k.count]}

 

Конечно, не бог весть что, за Google Analytics или Яндекс.Метрикой навряд ли угонишься. Но это все универсальные средства, призванные угодить на все вкусы; возможно, вы посчитаете, что индпошив лучше ширпотреба? При умелом использовании, хм... можно добиться многого.

Используем данные за определенный период времени только, ненужное удаляем:

 

Ahoy::Visit.where("started_at < ?", 2.years.ago).find_in_batches do |visits|
  visit_ids = visits.map(&:id)
  Ahoy::Event.where(visit_id: visit_ids).delete_all
  Ahoy::Visit.where(id: visit_ids).delete_all
end

Оставить комментарий

Добавьте ваш комментарий