Class: Consolle::Server::SupervisorFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/consolle/server/supervisor_factory.rb

Overview

Factory for creating the appropriate supervisor based on configuration

Modes:

  • :pty - PTY-based, supports custom command (local/remote)

  • :embed_irb - Pure IRB embedding (Ruby 3.3+, local only)

  • :embed_rails - Rails console embedding (Ruby 3.3+, local only)

Constant Summary collapse

MODES =
%i[pty embed_irb embed_rails].freeze
EMBEDDED_MODES =
%i[embed_irb embed_rails].freeze

Class Method Summary collapse

Class Method Details

.create(rails_root:, mode: :pty, **options) ⇒ BaseSupervisor

Create a supervisor instance

Parameters:

  • rails_root (String)

    Path to project root

  • mode (Symbol) (defaults to: :pty)

    :pty, :embed_irb, or :embed_rails

  • options (Hash)

    Additional options passed to supervisor

Returns:



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/consolle/server/supervisor_factory.rb', line 24

def create(rails_root:, mode: :pty, **options)
  mode = normalize_mode(mode)
  validate_mode!(mode)

  case mode
  when :pty
    create_pty_supervisor(rails_root, options)
  when :embed_irb
    create_embedded_supervisor(rails_root, :embed_irb, options)
  when :embed_rails
    create_embedded_supervisor(rails_root, :embed_rails, options)
  end
end

.embedded_available?Boolean

Check if embedded mode is available (Ruby 3.3+)

Returns:

  • (Boolean)


40
41
42
# File 'lib/consolle/server/supervisor_factory.rb', line 40

def embedded_available?
  EmbeddedSupervisor.supported?
end