module Card::Machine

Constants

REFRESHED

Public Class Methods

refresh_asset(asset_type, force) click to toggle source
# File lib/card/machine.rb, line 38
def refresh_asset asset_type, force
  all_rule(asset_type)&.refresh_output force: force
end
refresh_assets(force: false) click to toggle source
# File lib/card/machine.rb, line 6
def refresh_assets force: false
  return unless force || refresh_assets?

  refresh_asset :script, force
  refresh_asset :style, force
end
refresh_assets!() click to toggle source
# File lib/card/machine.rb, line 13
def refresh_assets!
  refresh_assets force: true
end
reset_all() click to toggle source
# File lib/card/machine.rb, line 17
def reset_all
  Auth.as_bot do
    Card.search(right: { codename: "machine_output" }).each do |card|
      card.update_columns trash: true
      card.expire
    end
  end
  reset_virtual_machine_cache
end
reset_script() click to toggle source
# File lib/card/machine.rb, line 27
def reset_script
  Auth.as_bot do
    card = Card[:all, :script, :machine_output]
    if card
      card.update_columns trash: true
      card.expire
      reset_virtual_machine_cache
    end
  end
end

Private Class Methods

all_rule(asset_type) click to toggle source
# File lib/card/machine.rb, line 44
def all_rule asset_type
  Card[[:all, asset_type]]
end
cautious_refresh?() click to toggle source

only refresh when cache was cleared

# File lib/card/machine.rb, line 64
def cautious_refresh?
  return false unless Cache.persistent_cache
  return false if Card.cache.read REFRESHED

  Card.cache.write REFRESHED, true
end
refresh_assets?() click to toggle source
# File lib/card/machine.rb, line 52
def refresh_assets?
  case Cardio.config.machine_refresh
  when :eager    then true
  when :cautious then cautious_refresh?
  when :never    then false
  else
    raise Card::Error,
          "unknown option for machine_refresh: #{Cardio.config.machine_refresh}"
  end
end
reset_virtual_machine_cache() click to toggle source
# File lib/card/machine.rb, line 48
def reset_virtual_machine_cache
  Virtual.where(right_id: MachineCacheID).delete_all
end