2024-04-13 09:28:45 -04:00
class AutoUpgradeJob < ApplicationJob
2025-01-24 13:39:08 -05:00
queue_as :latency_low
2024-04-13 09:28:45 -04:00
def perform ( * args )
raise_if_disabled
return Rails . logger . info " Skipping auto-upgrades because app is set to manual upgrades. Please set UPGRADES_MODE=auto to enable auto-upgrades " if Setting . upgrades_mode == " manual "
Rails . logger . info " Searching for available auto-upgrades... "
candidate = Upgrader . available_upgrade_by_type ( Setting . upgrades_target )
if candidate
if Rails . cache . read ( " last_auto_upgrade_commit_sha " ) == candidate . commit_sha
Rails . logger . info " Skipping auto upgrade: #{ candidate . type } #{ candidate . commit_sha } deploy in progress "
return
end
Rails . logger . info " Auto upgrading to #{ candidate . type } #{ candidate . commit_sha } ... "
Upgrader . upgrade_to ( candidate )
Rails . cache . write ( " last_auto_upgrade_commit_sha " , candidate . commit_sha , expires_in : 1 . day )
else
Rails . logger . info " No auto upgrade available at this time "
end
end
private
def raise_if_disabled
raise " Upgrades module is disabled. Please set UPGRADES_ENABLED=true to enable upgrade features " unless ENV [ " UPGRADES_ENABLED " ] == " true "
end
end