Module: WitchDoctor::AntivirusConcern::ClassMethods

Defined in:
lib/witch_doctor/antivirus_concern.rb

Instance Method Summary collapse

Instance Method Details

#schedule_virus_scan(options) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/witch_doctor/antivirus_concern.rb', line 14

def schedule_virus_scan(options)
  mount_point = options.fetch(:on)

  after_save :"schedule_#{mount_point}_virus_scan", if: ["schedule_#{mount_point}_virus_scan?", :virus_scan_scheduling_on?]
  after_destroy :"unschedule_#{mount_point}_virus_scan"

  define_method("unschedule_#{mount_point}_virus_scan") do
    virus_scans.where(mount_point: mount_point.to_s).each {|vs| vs.destroy}
  end

  define_method("schedule_#{mount_point}_virus_scan") do
    virus_scans.create! do |vs|
      vs.mount_point = mount_point.to_s
    end
  end

  define_method("schedule_#{mount_point}_virus_scan?") do
    # equivalent to: (created_at_changed? && logo.present?) || (logo_changed? && logo.present?)
    (created_at_changed? && send(mount_point).present?) \
      || (send("#{mount_point}_changed?") && send(mount_point).present?)
  end

  define_method("#{mount_point}_antivirus") do
    instance_variable_get("@#{mount_point}_antivirus") \
      || instance_variable_set("@#{mount_point}_antivirus", Antivirus.new(self, mount_point))
  end
end