Class: RubyClaude::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_claude/configuration.rb

Overview

Holds every tunable option with sane defaults.

Used as the global default (via configure) and as the basis for per-Client overrides through #merge. A configuration is only ever read while a query runs, never mutated, which keeps Client thread-safe.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/ruby_claude/configuration.rb', line 43

def initialize
  @binary = "claude"
  @model = nil
  @cwd = Dir.pwd
  @timeout = 300
  @use_subscription = true
  @append_system_prompt = nil
  @allowed_tools = nil
  @disallowed_tools = nil
  @add_dirs = []
  @permission_mode = nil
  @max_turns = nil
end

Instance Attribute Details

#add_dirsArray<String>

Returns directories for repeated --add-dir.

Returns:

  • (Array<String>)

    directories for repeated --add-dir



35
36
37
# File 'lib/ruby_claude/configuration.rb', line 35

def add_dirs
  @add_dirs
end

#allowed_toolsArray<String>, ...

Returns tools for --allowedTools.

Returns:

  • (Array<String>, String, nil)

    tools for --allowedTools



29
30
31
# File 'lib/ruby_claude/configuration.rb', line 29

def allowed_tools
  @allowed_tools
end

#append_system_promptString?

Returns text for --append-system-prompt.

Returns:

  • (String, nil)

    text for --append-system-prompt



26
27
28
# File 'lib/ruby_claude/configuration.rb', line 26

def append_system_prompt
  @append_system_prompt
end

#binaryString

Returns executable name or path of the CLI.

Returns:

  • (String)

    executable name or path of the CLI



11
12
13
# File 'lib/ruby_claude/configuration.rb', line 11

def binary
  @binary
end

#cwdString?

Returns working directory for the subprocess.

Returns:

  • (String, nil)

    working directory for the subprocess



17
18
19
# File 'lib/ruby_claude/configuration.rb', line 17

def cwd
  @cwd
end

#disallowed_toolsArray<String>, ...

Returns tools for --disallowedTools.

Returns:

  • (Array<String>, String, nil)

    tools for --disallowedTools



32
33
34
# File 'lib/ruby_claude/configuration.rb', line 32

def disallowed_tools
  @disallowed_tools
end

#max_turnsInteger?

Returns limit for --max-turns.

Returns:

  • (Integer, nil)

    limit for --max-turns



41
42
43
# File 'lib/ruby_claude/configuration.rb', line 41

def max_turns
  @max_turns
end

#modelString?

Returns model for --model (nil uses the CLI default).

Returns:

  • (String, nil)

    model for --model (nil uses the CLI default)



14
15
16
# File 'lib/ruby_claude/configuration.rb', line 14

def model
  @model
end

#permission_modeString?

Returns mode for --permission-mode.

Returns:

  • (String, nil)

    mode for --permission-mode



38
39
40
# File 'lib/ruby_claude/configuration.rb', line 38

def permission_mode
  @permission_mode
end

#timeoutInteger

Returns seconds before the child process is killed.

Returns:

  • (Integer)

    seconds before the child process is killed



20
21
22
# File 'lib/ruby_claude/configuration.rb', line 20

def timeout
  @timeout
end

#use_subscriptionBoolean

Returns when true, strip ANTHROPIC_API_KEY from the child env.

Returns:

  • (Boolean)

    when true, strip ANTHROPIC_API_KEY from the child env



23
24
25
# File 'lib/ruby_claude/configuration.rb', line 23

def use_subscription
  @use_subscription
end

Instance Method Details

#merge(overrides) ⇒ Configuration

Return a copy with the given overrides applied. The receiver is left untouched, so the global configuration is never mutated by a RubyClaude::Client.

Parameters:

  • overrides (Hash{Symbol => Object})

Returns:

Raises:

  • (ArgumentError)

    when an option is not recognized



63
64
65
66
67
68
69
70
71
72
# File 'lib/ruby_claude/configuration.rb', line 63

def merge(overrides)
  dup.tap do |copy|
    overrides.each do |key, value|
      setter = "#{key}="
      raise ArgumentError, "unknown configuration option: #{key}" unless copy.respond_to?(setter)

      copy.public_send(setter, value)
    end
  end
end

#to_hHash{Symbol => Object}

Returns a plain-hash view of the configuration.

Returns:

  • (Hash{Symbol => Object})

    a plain-hash view of the configuration



75
76
77
78
79
80
81
82
# File 'lib/ruby_claude/configuration.rb', line 75

def to_h
  {
    binary: binary, model: model, cwd: cwd, timeout: timeout,
    use_subscription: use_subscription, append_system_prompt: append_system_prompt,
    allowed_tools: allowed_tools, disallowed_tools: disallowed_tools,
    add_dirs: add_dirs, permission_mode: permission_mode, max_turns: max_turns
  }
end