Sha256: 884ff1684025c771260f97d990d782b3daec764e28766e541d09792cac7de393

Contents?: true

Size: 1.59 KB

Versions: 1

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true

require "rails/engine"
require "turbo-rails"

module Katalyst
  module Kpop
    class Engine < ::Rails::Engine
      isolate_namespace Katalyst::Kpop
      config.eager_load_namespaces << Katalyst::Kpop
      config.autoload_once_paths = %W(
        #{root}/app/helpers
        #{root}/app/controllers
        #{root}/app/controllers/concerns
      )
      config.paths.add("lib", autoload_once: true)

      initializer "kpop.assets" do
        config.after_initialize do |app|
          if app.config.respond_to?(:assets)
            app.config.assets.precompile += %w(katalyst-kpop.js)
          end
        end
      end

      initializer "kpop.helpers", before: :load_config_initializers do
        ::Turbo::Streams::TagBuilder.define_method(:kpop) do
          Katalyst::Kpop::Turbo::TagBuilder.new(self)
        end

        ActiveSupport.on_load(:action_controller_base) do
          include Katalyst::Kpop::FrameRequest
          helper Katalyst::Kpop::Engine.helpers
        end
      end

      initializer "kpop.importmap", before: "importmap" do |app|
        if app.config.respond_to?(:importmap)
          app.config.importmap.paths << root.join("config/importmap.rb")
          app.config.importmap.cache_sweepers << root.join("app/assets/builds")
        end
      end

      initializer "kpop.rspec" do
        next unless defined?(RSpec) && RSpec.respond_to?(:configure)

        RSpec.configure do |config|
          config.include Katalyst::Kpop::Matchers, type: :component
          config.include Katalyst::Kpop::Matchers, type: :request
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
katalyst-kpop-3.2.1 lib/katalyst/kpop/engine.rb