There's no point generating stats nobody can access. Note with this change we're automatically excluding polls created in the dashboard, since these polls don't have stats enabled.
28 lines
808 B
Ruby
28 lines
808 B
Ruby
namespace :stats do
|
|
desc "Generates stats which are not cached yet"
|
|
task generate: :environment do
|
|
ApplicationLogger.new.info "Updating budget and poll stats"
|
|
admin_ability = Ability.new(Administrator.first.user)
|
|
|
|
Budget.accessible_by(admin_ability, :read_stats).find_each do |budget|
|
|
Budget::Stats.new(budget).generate
|
|
print "."
|
|
end
|
|
|
|
Poll.accessible_by(admin_ability, :stats).find_each do |poll|
|
|
Poll::Stats.new(poll).generate
|
|
print "."
|
|
end
|
|
end
|
|
|
|
desc "Expires stats cache"
|
|
task expire_cache: :environment do
|
|
[Budget, Poll].each do |model_class|
|
|
model_class.find_each { |record| record.find_or_create_stats_version.touch }
|
|
end
|
|
end
|
|
|
|
desc "Deletes stats cache and generates it again"
|
|
task regenerate: [:expire_cache, :generate]
|
|
end
|