namespace :totalizer do
task validate: :environment do abort '! Growth metric not defined. Please define your growth metric before running this task. See https://github.com/micdijkstra/totalizer' unless Totalizer.growth_metric abort '! Activity metric not defined. Please define your growth metric before running this task. See https://github.com/micdijkstra/totalizer' unless Totalizer.activity_metric abort '! Vanity metric not defined. Please define your vanity metric before running this task. See https://github.com/micdijkstra/totalizer' unless Totalizer.vanity_metric end task daily: :validate do Totalizer.logger.info "Totalizer: Daily" messages = { acquisition: [Totalizer.generate(:acquisition, 1)], vanity: [Totalizer.generate(:vanity, 1)], activity: [Totalizer.generate(:activity, 1)], } Totalizer.notify messages end task weekly: :validate do Totalizer.logger.info "Totalizer: Weekly" messages = { acquisition: [Totalizer.generate(:acquisition, 7), Totalizer.generate(:acquisition, 30)], vanity: [Totalizer.generate(:vanity, 7), Totalizer.generate(:vanity, 30)], activity: [Totalizer.generate(:activity, 7), Totalizer.generate(:activity, 30)], activation: [Totalizer.generate(:activation, 7), Totalizer.generate(:activation, 30)], engagement: [Totalizer.generate(:engagement, 7), Totalizer.generate(:engagement, 30)], retention: [Totalizer.generate(:retention, 7), Totalizer.generate(:retention, 30)], churn: [Totalizer.generate(:churn, 7), Totalizer.generate(:churn, 30)], } Totalizer.notify messages end task combined: :validate do if DateTime.now.wday == Totalizer.weekly_day Rake::Task["totalizer:weekly"].invoke else Rake::Task["totalizer:daily"].invoke end end
end