Class: Spikard::ServerConfig

Inherits:
Object
  • Object
show all
Defined in:
lib/spikard/config.rb

Overview

Complete server configuration for Spikard.

This is the main configuration object that controls all aspects of the server including network settings, middleware, authentication, and more.

Examples:

config = ServerConfig.new(
  host: '0.0.0.0',
  port: 8080,
  workers: 4,
  compression: CompressionConfig.new(quality: 9),
  rate_limit: RateLimitConfig.new(per_second: 100, burst: 200),
  static_files: [
    StaticFilesConfig.new(
      directory: './public',
      route_prefix: '/static'
    )
  ],
  openapi: OpenApiConfig.new(
    enabled: true,
    title: 'My API',
    version: '1.0.0'
  )
)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host: '127.0.0.1', port: 8000, workers: 1, enable_request_id: true, max_body_size: 10 * 1024 * 1024, request_timeout: 30, compression: CompressionConfig.new, rate_limit: nil, jwt_auth: nil, api_key_auth: nil, static_files: [], graceful_shutdown: true, shutdown_timeout: 30, openapi: nil) ⇒ ServerConfig

Returns a new instance of ServerConfig.

Parameters:

  • host (String) (defaults to: '127.0.0.1')

    Host address to bind to (default: “127.0.0.1”)

  • port (Integer) (defaults to: 8000)

    Port number to listen on (default: 8000, range: 1-65535)

  • workers (Integer) (defaults to: 1)

    Number of worker processes (default: 1)

  • enable_request_id (Boolean) (defaults to: true)

    Add X-Request-ID header to responses (default: true)

  • max_body_size (Integer, nil) (defaults to: 10 * 1024 * 1024)

    Maximum request body size in bytes (default: 10MB, nil for unlimited)

  • request_timeout (Integer, nil) (defaults to: 30)

    Request timeout in seconds (default: 30, nil for no timeout)

  • compression (CompressionConfig, nil) (defaults to: CompressionConfig.new)

    Response compression configuration (default: enabled with defaults)

  • rate_limit (RateLimitConfig, nil) (defaults to: nil)

    Rate limiting configuration (default: nil/disabled)

  • jwt_auth (JwtConfig, nil) (defaults to: nil)

    JWT authentication configuration (default: nil/disabled)

  • api_key_auth (ApiKeyConfig, nil) (defaults to: nil)

    API key authentication configuration (default: nil/disabled)

  • static_files (Array<StaticFilesConfig>) (defaults to: [])

    List of static file serving configurations (default: [])

  • graceful_shutdown (Boolean) (defaults to: true)

    Enable graceful shutdown (default: true)

  • shutdown_timeout (Integer) (defaults to: 30)

    Graceful shutdown timeout in seconds (default: 30)

  • openapi (OpenApiConfig, nil) (defaults to: nil)

    OpenAPI configuration (default: nil/disabled)



388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
# File 'lib/spikard/config.rb', line 388

def initialize(
  host: '127.0.0.1',
  port: 8000,
  workers: 1,
  enable_request_id: true,
  max_body_size: 10 * 1024 * 1024, # 10MB
  request_timeout: 30,
  compression: CompressionConfig.new,
  rate_limit: nil,
  jwt_auth: nil,
  api_key_auth: nil,
  static_files: [],
  graceful_shutdown: true,
  shutdown_timeout: 30,
  openapi: nil
)
  @host = host
  @port = normalize_port(port)
  @workers = normalize_workers(workers)
  @enable_request_id = normalize_boolean('enable_request_id', enable_request_id)
  @max_body_size = normalize_optional_nonnegative_integer('max_body_size', max_body_size)
  @request_timeout = normalize_timeout('request_timeout', request_timeout)
  @compression = compression
  @rate_limit = rate_limit
  @jwt_auth = jwt_auth
  @api_key_auth = api_key_auth
  @static_files = normalize_static_files(static_files)
  @graceful_shutdown = normalize_boolean('graceful_shutdown', graceful_shutdown)
  @shutdown_timeout = normalize_timeout('shutdown_timeout', shutdown_timeout)
  @openapi = openapi
end

Instance Attribute Details

#api_key_authObject

Returns the value of attribute api_key_auth.



368
369
370
# File 'lib/spikard/config.rb', line 368

def api_key_auth
  @api_key_auth
end

#compressionObject

Returns the value of attribute compression.



368
369
370
# File 'lib/spikard/config.rb', line 368

def compression
  @compression
end

#enable_request_idObject

Returns the value of attribute enable_request_id.



368
369
370
# File 'lib/spikard/config.rb', line 368

def enable_request_id
  @enable_request_id
end

#graceful_shutdownObject

Returns the value of attribute graceful_shutdown.



368
369
370
# File 'lib/spikard/config.rb', line 368

def graceful_shutdown
  @graceful_shutdown
end

#hostObject

Returns the value of attribute host.



368
369
370
# File 'lib/spikard/config.rb', line 368

def host
  @host
end

#jwt_authObject

Returns the value of attribute jwt_auth.



368
369
370
# File 'lib/spikard/config.rb', line 368

def jwt_auth
  @jwt_auth
end

#max_body_sizeObject

Returns the value of attribute max_body_size.



368
369
370
# File 'lib/spikard/config.rb', line 368

def max_body_size
  @max_body_size
end

#openapiObject

Returns the value of attribute openapi.



368
369
370
# File 'lib/spikard/config.rb', line 368

def openapi
  @openapi
end

#portObject

Returns the value of attribute port.



368
369
370
# File 'lib/spikard/config.rb', line 368

def port
  @port
end

#rate_limitObject

Returns the value of attribute rate_limit.



368
369
370
# File 'lib/spikard/config.rb', line 368

def rate_limit
  @rate_limit
end

#request_timeoutObject

Returns the value of attribute request_timeout.



368
369
370
# File 'lib/spikard/config.rb', line 368

def request_timeout
  @request_timeout
end

#shutdown_timeoutObject

Returns the value of attribute shutdown_timeout.



368
369
370
# File 'lib/spikard/config.rb', line 368

def shutdown_timeout
  @shutdown_timeout
end

#static_filesObject

Returns the value of attribute static_files.



368
369
370
# File 'lib/spikard/config.rb', line 368

def static_files
  @static_files
end

#workersObject

Returns the value of attribute workers.



368
369
370
# File 'lib/spikard/config.rb', line 368

def workers
  @workers
end