CanineHQ/canine · error · RuntimeError

No installer registered for package: #{name}

Error message

No installer registered for package: #{name}

What it means

Error "No installer registered for package: #{name}" thrown in CanineHQ/canine.

Source

Thrown at app/models/cluster_package.rb:57

  after_update_commit :broadcast_package

  DEFINITIONS = YAML.load_file(Rails.root.join("resources", "helm", "system_packages.yml"))["packages"]

  INSTALLER_REGISTRY = {
    "traefik-ingress" => "ClusterPackage::Installer::TraefikIngress",
    "nginx-ingress" => "ClusterPackage::Installer::NginxIngress",
    "cert-manager" => "ClusterPackage::Installer::CertManager",
    "metrics-server" => "ClusterPackage::Installer::MetricsServer",
    "telepresence" => "ClusterPackage::Installer::Telepresence",
    "cloudflared" => "ClusterPackage::Installer::Cloudflared"
  }.freeze

  def definition
    DEFINITIONS.find { |d| d["name"] == name }
  end

  def installer
    class_name = INSTALLER_REGISTRY.fetch(name) { raise "No installer registered for package: #{name}" }
    class_name.constantize.new(self)
  end

  def configurable?
    definition&.dig("template").present?
  end

  def self.definitions
    DEFINITIONS
  end

  def self.default_package_names
    DEFINITIONS.select { |d| d["default"] }.map { |d| d["name"] }
  end

  def self.permitted_config_keys(package_name)
    defn = DEFINITIONS.find { |d| d["name"] == package_name }
    defn&.dig("template")&.map { |field| field["key"] } || []

View on GitHub (pinned to ba4ee3968d)

When it happens

Trigger: Thrown at app/models/cluster_package.rb:57 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of CanineHQ/canine@ba4ee3968d (2026-08-23). Data as JSON: /api/errors/3cbbe80edc278387. Report an issue: GitHub.