Module: GoogleAnalyticsPageViewRanking::Ranking::ClassMethods

Defined in:
lib/google_analytics_page_view_ranking/ranking.rb

Instance Method Summary collapse

Instance Method Details

#google_analytics_fetch_limitObject



67
68
69
# File 'lib/google_analytics_page_view_ranking/ranking.rb', line 67

def google_analytics_fetch_limit
  30
end

#google_analytics_find_item(value) ⇒ Object



62
63
64
65
# File 'lib/google_analytics_page_view_ranking/ranking.rb', line 62

def google_analytics_find_item(value)
  target_id = value.page_path.slice(/\d+\z/)
  find_by(id: target_id)
end

#google_analytics_page_path_regexObject



57
58
59
60
# File 'lib/google_analytics_page_view_ranking/ranking.rb', line 57

def google_analytics_page_path_regex
  item_type = model_name.element.to_sym
  "^/#{item_type.to_s.pluralize}/[0-9]+$"
end

#refresh_daily_ranking!Object



25
26
27
28
29
# File 'lib/google_analytics_page_view_ranking/ranking.rb', line 25

def refresh_daily_ranking!
  start_date = Date.yesterday
  end_date = Date.yesterday
  refresh_ranking!(:daily, start_date, end_date)
end

#refresh_monthly_ranking!Object



37
38
39
40
41
# File 'lib/google_analytics_page_view_ranking/ranking.rb', line 37

def refresh_monthly_ranking!
  start_date = 1.month.ago
  end_date = Time.current
  refresh_ranking!(:monthly, start_date, end_date)
end

#refresh_ranking!(period_type, start_date, end_date) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/google_analytics_page_view_ranking/ranking.rb', line 43

def refresh_ranking!(period_type, start_date, end_date)
  analytics = GoogleAnalyticsPageViewRanking::GoogleAnalytics.new
  analytics.ranking(google_analytics_page_path_regex, start_date, end_date, google_analytics_fetch_limit).results.each do |value|
    if target = google_analytics_find_item(value)
      page_view = target.rankings.build
      page_view.period_type = period_type
      page_view.page_view = value.pageviews
      unless page_view.save
        GoogleAnalyticsPageViewRanking.log "[GoogleAnalyticsPageViewRanking] failed to save #{self.class_name}: #{value}"
      end
    end
  end
end

#refresh_weekly_ranking!Object



31
32
33
34
35
# File 'lib/google_analytics_page_view_ranking/ranking.rb', line 31

def refresh_weekly_ranking!
  start_date = 1.week.ago
  end_date = Time.current
  refresh_ranking!(:weekly, start_date, end_date)
end