diff --git a/lib/tasks/statistics.rake b/lib/tasks/statistics.rake index e03e2832eff3d5146bd3757daf85eee1b9b4fa9b..08cda734e93db787386f1c0409bcd124643de532 100644 --- a/lib/tasks/statistics.rake +++ b/lib/tasks/statistics.rake @@ -1,56 +1,73 @@ namespace :statistics do + + require 'config/environment' + desc 'on users: total, active' - task :users => :environment do - puts "Users: %i and %i incomplete" % [User.where(:getting_started => false).count, - User.where(:getting_started => true, :sign_in_count.gt => 0).count] - puts "Invitations sent: %i" % Invitation.count - puts "Contacts: %i and %i pending" % [p = Contact.where(:pending => false).count, Contact.count - p] - puts "Aspects: %i" % Aspect.count - puts "Users signed in in last 24h: %i" % User.where(:current_sign_in_at.gt => Time.now - 1.day).count - puts "Users signed in in last 7d: %i" % User.where(:current_sign_in_at.gt => Time.now - 7.days).count - end - task :users_splunk => :environment do - puts "event=statistic, type=users, count=#{User.count}, "+ - "incomplete=#{User.where(:getting_started => true, :sign_in_count.gt => 0).count}, " + - "last_1d=#{User.where(:current_sign_in_at.gt => Time.now - 1.days).count}, "+ - "last_7d=#{User.where(:current_sign_in_at.gt => Time.now - 7.days).count}, " + - "notification_off=#{User.where(:disable_mail=>true).count}, "+ - "notification_off_%=#{User.where(:disable_mail=>true).count.to_f/User.count}, "+ - "no_invites=#{User.where(:invites => 0).count}, "+ - "last_7d_%=#{User.where(:current_sign_in_at.gt => Time.now - 7.days).count.to_f/User.count}, " + - "last_7d_and_notifications_off_%=#{User.where(:current_sign_in_at.gt => Time.now - 7.days, :disable_mail => true).count.to_f/User.where(:disable_mail=>true).count}, " + - "last_7d_and_no_invites_%=#{User.where(:current_sign_in_at.gt => Time.now - 7.days, :invites => 0).count.to_f/User.where(:invites => 0).count}" - - - - puts "event=statistic, type=invitations, count=#{Invitation.count}" - puts "event=statistic, type=contacts, active_count=#{Contact.where(:pending => false).count}" - puts "event=statistic, type=contacts, pending_count=#{Contact.where(:pending => true).count}" + namespace :users do + users = User.where(:getting_started => false).count + incomplete = User.where("getting_started = TRUE AND sign_in_count >= 0").count + invitations = Invitation.count + contacts_active = Contact.where(:pending => false).count + contacts_pending = Contact.count - contacts_active + aspects = Aspect.count + last_24_hrs = User.where("current_sign_in_at > '#{(Time.now - 1.day).to_date}'").count + last_7_d = User.where("current_sign_in_at > '#{(Time.now - 7.days).to_date}'").count + + notification_off = User.where(:disable_mail=>true).count + notification_off_per = notification_off.to_f / users + no_invites = User.where(:invites => 0).count + + task :human => :environment do + puts "Users: %i and %i incomplete" % [users, incomplete] + puts "Invitations sent: %i" % invitations + puts "Contacts: %i and %i pending" % [contacts_active, contacts_pending] + puts "Aspects: %i" % aspects + puts "Users signed in in last 24h: %i" % last_24_hrs + puts "Users signed in in last 7d: %i" % last_7_d + end - puts "event=statistic, type=aspect, count=#{ Aspect.count }" + task :splunk => :environment do + puts "event=statistic, type=users, count=#{users}, "+ + "incomplete=#{incomplete}, " + + "last_1d=#{last_24_hrs}, "+ + "last_7d=#{last_7_d}, " + + "notification_off=#{notification_off}, "+ + "notification_off_%=#{notification_off_per}, "+ + "no_invites=#{no_invites}" + + puts "event=statistic, type=invitations, count=#{invitations}" + puts "event=statistic, type=contacts, active_count=#{contacts_active}" + puts "event=statistic, type=contacts, pending_count=#{contacts_pending}" + + puts "event=statistic, type=aspect, count=#{aspects}" + end end desc 'on content: posts, photos, status messages, comments' - task :content => :environment do - puts "Services: %i Facebook, %i Twitter" % [Services::Facebook.count, Services::Twitter.count] - puts "Posts: %i and %i are public" % [Post.count, Post.where(:public => true).count] - puts "Status messages: %i" % [StatusMessage.count, StatusMessage.where(:public => true).count] - puts "Comments: %i" % Comment.count - puts "Photos: %i" % Photo.count - end - - task :content_splunk => :environment do - puts "event=statistic, type=posts, count=#{Post.count}, public_count=#{Post.where(:public => true).count}, public_% =#{Post.where(:public => true).count.to_f/Post.count}, " + - "last_day = #{Post.where(:created_at.gt => Time.now - 1.days).count}, last_day_public_count=#{Post.where(:created_at.gt => Time.now - 1.days, :public => true).count}, "+ - "last_day_public_% = #{Post.where(:created_at.gt => Time.now - 1.days, :public => true).count.to_f/Post.where(:created_at.gt => Time.now - 1.days).count}" - end + namespace :content do + task :human => :environment do + puts "Services: %i Facebook, %i Twitter" % [Services::Facebook.count, Services::Twitter.count] + puts "Posts: %i and %i are public" % [Post.count, Post.where(:public => true).count] + puts "Status messages: %i" % [StatusMessage.count, StatusMessage.where(:public => true).count] + puts "Comments: %i" % Comment.count + puts "Photos: %i" % Photo.count + end + + task :splunk => :environment do + post_count = Post.count + public_count = Post.where(:public => true).count + public_per = public_count.to_f/post_count + posts_last_day = Post.where("created_at > '#{(Time.now - 1.days).to_date}'").count + posts_last_day_public = Post.where("created_at > '#{(Time.now - 1.days).to_date}' AND public = true").count + posts_last_day_public_per = posts_last_day_public.to_f/posts_last_day - task :genders => :environment do - genders = Person.collection.group(['profile.gender'], {}, {:count => 0}, 'function(o,p) { p.count++; }', true ) - genders.sort!{|a,b| a['profile.gender'].to_s <=> b['profile.gender'].to_s} - genders.each do |gender| - puts "%s: %i" % [gender['profile.gender']||'none given', gender['count']] + puts "event=statistic, type=posts, count=#{post_count}, " + + "public_count=#{public_count}, " + + "public_%=#{public_per}, " + + "last_day=#{posts_last_day}, " + + "last_day_public_count=#{posts_last_day_public}, " + + "last_day_public_%=#{posts_last_day_public_per}" end end end