Sha256: 433efc6c4aa9d1a97c81328c1691373c2a7ae55cb80fae74f2144ebf509b74e1

Contents?: true

Size: 1.22 KB

Versions: 9

Compression:

Stored size: 1.22 KB

Contents

require "action_cable/engine"
require_relative "connection"
require_relative "reload_channel"

module Lookbook
  class Cable
    attr_reader :engine_mount_path, :server, :logger

    def initialize(engine_mount_path, logger: Lookbook.logger)
      @engine_mount_path = engine_mount_path
      @logger = logger

      logger.info "Initializing websocket"

      if Gem::Version.new(Rails.version) >= Gem::Version.new(6.0)
        @server = ActionCable::Server::Base.new config: cable_config
      else
        @server = ActionCable::Server::Base.new
        @server.config = cable_config
      end
    end

    def broadcast(message, payload = nil)
      logger.debug message.to_s
      server.broadcast(message.to_s, payload.to_h)
    end

    def mount_path
      "/cable"
    end

    def full_mount_path
      "#{engine_mount_path}/#{mount_path}".gsub("//", "/")
    end

    def mountable?
      true
    end

    alias_method :mounted?, :mountable?

    protected

    def cable_config
      cable = ActionCable::Server::Configuration.new
      cable.cable = {adapter: "async"}.with_indifferent_access
      cable.mount_path = nil
      cable.connection_class = -> { Lookbook::Connection }
      cable.logger = logger
      cable
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
lookbook-2.3.4 lib/lookbook/cable/cable.rb
lookbook-2.3.3 lib/lookbook/cable/cable.rb
lookbook-2.3.2 lib/lookbook/cable/cable.rb
lookbook-2.3.0 lib/lookbook/cable/cable.rb
lookbook-2.2.2 lib/lookbook/cable/cable.rb
lookbook-2.2.1 lib/lookbook/cable/cable.rb
lookbook-2.2.0 lib/lookbook/cable/cable.rb
lookbook-2.1.1 lib/lookbook/cable/cable.rb
lookbook-2.1.0 lib/lookbook/cable/cable.rb