lib/tasks/punching_bag.rake in punching_bag-0.6.0 vs lib/tasks/punching_bag.rake in punching_bag-0.6.1

- old
+ new

@@ -1,38 +1,68 @@ namespace :punching_bag do desc 'Combine old hit records together to improve performance' - task :combine, [:by_hour_after, :by_day_after, :by_month_after, :by_year_after] => [:environment] do |t, args| - args.with_defaults :by_hour_after => 24, :by_day_after => 7, :by_month_after => 1, :by_year_after => 1 + task( + :combine, + %i[by_hour_after by_day_after by_month_after by_year_after] => [:environment] + ) do |_t, args| + args.with_defaults( + by_hour_after: 24, + by_day_after: 7, + by_month_after: 1, + by_year_after: 1 + ) - punchable_types = Punch.unscope(:order).uniq.pluck(:punchable_type) + distinct_method = Rails.version >= '5.0' ? :distinct : :uniq + punchable_types = Punch.unscope(:order).public_send( + distinct_method + ).pluck(:punchable_type) + punchable_types.each do |punchable_type| punchables = punchable_type.constantize.unscoped.find( - Punch.unscope(:order).uniq.where(punchable_type: punchable_type).pluck(:punchable_id) + Punch.unscope(:order).public_send(distinct_method).where( + punchable_type: punchable_type + ).pluck(:punchable_id) ) punchables.each do |punchable| # by_year - punchable.punches.before(args[:by_year_after].to_i.years.ago).each do |punch| - punch.reload # Dont use the cached version - we might have changed if we were the combo + punchable.punches.before( + args[:by_year_after].to_i.years.ago + ).each do |punch| + # Dont use the cached version. + # We might have changed if we were the combo + punch.reload punch.combine_by_year end # by_month - punchable.punches.before(args[:by_month_after].to_i.months.ago).each do |punch| - punch.reload # Dont use the cached version - we might have changed if we were the combo + punchable.punches.before( + args[:by_month_after].to_i.months.ago + ).each do |punch| + # Dont use the cached version. + # We might have changed if we were the combo + punch.reload punch.combine_by_month end # by_day - punchable.punches.before(args[:by_day_after].to_i.days.ago).each do |punch| - punch.reload # Dont use the cached version - we might have changed if we were the combo + punchable.punches.before( + args[:by_day_after].to_i.days.ago + ).each do |punch| + # Dont use the cached version. + # We might have changed if we were the combo + punch.reload punch.combine_by_day end # by_hour - punchable.punches.before(args[:by_hour_after].to_i.hours.ago).each do |punch| - punch.reload # Dont use the cached version - we might have changed if we were the combo + punchable.punches.before( + args[:by_hour_after].to_i.hours.ago + ).each do |punch| + # Dont use the cached version. + # We might have changed if we were the combo + punch.reload punch.combine_by_hour end end end end