Class: Gemvault::VaultUpgrade

Inherits:
Object
  • Object
show all
Defined in:
lib/gemvault/vault_upgrade.rb

Overview

Migrates a vault to the current storage format by reading it through its existing backend and rewriting it through the current-format writer, then atomically swapping the file into place. Preserves each gem's created_at.

Defined Under Namespace

Classes: Plan

Instance Method Summary collapse

Constructor Details

#initialize(path, backup: true) ⇒ VaultUpgrade

Returns a new instance of VaultUpgrade.



22
23
24
25
# File 'lib/gemvault/vault_upgrade.rb', line 22

def initialize(path, backup: true)
  @path = File.expand_path(path)
  @backup = backup
end

Instance Method Details

#callObject



35
36
37
38
39
40
41
42
# File 'lib/gemvault/vault_upgrade.rb', line 35

def call
  summary = plan
  return summary if summary.no_op?

  backup! if @backup
  rebuild(summary.gem_count)
  summary
end

#planObject



27
28
29
30
31
32
33
# File 'lib/gemvault/vault_upgrade.rb', line 27

def plan
  Deprecation.silence do
    Vault.open(@path) do |vault|
      Plan.new(from_version: vault.format_version, to_version: Vault::CURRENT_FORMAT, gem_count: vault.size)
    end
  end
end