Module: Wurk::DashboardManifest

Defined in:
lib/wurk/dashboard_manifest.rb

Overview

Validates that the precompiled dashboard bundle in vendor/assets matches this gem version. Run from the engine initializer in production to catch packaging mistakes (forgotten ‘frontend:build`, stale vendor/assets, mismatched release) at boot rather than as a runtime 500.

Defined Under Namespace

Classes: MissingError, VersionMismatch

Constant Summary collapse

MANIFEST_NAME =
'wurk-manifest.json'

Class Method Summary collapse

Class Method Details

.check!(root: ::Wurk::Engine.root, expected: ::Wurk::VERSION) ⇒ Object

Raises:



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/wurk/dashboard_manifest.rb', line 22

def check!(root: ::Wurk::Engine.root, expected: ::Wurk::VERSION)
  file = path(root)
  unless file.exist?
    raise MissingError,
          "Wurk dashboard manifest missing at #{file}. " \
          'Did `bin/rake frontend:build` run before `gem build`?'
  end

  data = ::JSON.parse(file.read)
  actual = data['version']
  return true if actual == expected

  raise VersionMismatch,
        "Wurk dashboard manifest version #{actual.inspect} != gem #{expected.inspect}"
end

.path(root) ⇒ Object



18
19
20
# File 'lib/wurk/dashboard_manifest.rb', line 18

def path(root)
  ::Pathname.new(root).join('vendor', 'assets', 'dashboard', MANIFEST_NAME)
end