Sha256: b94e95f5d4206b4d482805e84afaba05f353e593ffc824c7ac85294622a43131

Contents?: true

Size: 1.57 KB

Versions: 1

Compression:

Stored size: 1.57 KB

Contents

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

    punchable_types = Punch.uniq.pluck(:punchable_type)

    punchable_types.each do |punchable_type|
      punchables = punchable_type.constantize.find(
        Punch.uniq.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
          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
          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
          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
          punch.combine_by_hour
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
punching_bag-0.4.0 lib/tasks/punching_bag.rake