Class: Jobs::BadgeGrant

Inherits:
Scheduled show all
Defined in:
app/jobs/scheduled/badge_grant.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Scheduled

#perform

Methods inherited from Base

acquire_cluster_concurrency_lock!, clear_cluster_concurrency_lock!, cluster_concurrency, cluster_concurrency_redis_key, delayed_perform, #error_context, get_cluster_concurrency, #last_db_duration, #log, #perform, #perform_immediately

Class Method Details

.runObject



5
6
7
# File 'app/jobs/scheduled/badge_grant.rb', line 5

def self.run
  self.new.execute(nil)
end

Instance Method Details

#execute(args) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'app/jobs/scheduled/badge_grant.rb', line 11

def execute(args)
  return unless SiteSetting.enable_badges

  Badge.enabled.find_each do |b|
    begin
      BadgeGranter.backfill(b)
    rescue => ex
      # TODO - expose errors in UI
      Discourse.handle_job_exception(
        ex,
        error_context({}, code_desc: "Exception granting badges", extra: { badge_id: b.id }),
      )
    end
  end

  BadgeGranter.revoke_ungranted_titles!
  UserBadge.ensure_consistency! # Badge granter sometimes uses raw SQL, so hooks do not run. Clean up data
  UserStat.update_distinct_badge_count
end