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)



364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
# File 'lib/spikard/config.rb', line 364

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 = port
  @workers = workers
  @enable_request_id = enable_request_id
  @max_body_size = max_body_size
  @request_timeout = request_timeout
  @compression = compression
  @rate_limit = rate_limit
  @jwt_auth = jwt_auth
  @api_key_auth = api_key_auth
  @static_files = static_files
  @graceful_shutdown = graceful_shutdown
  @shutdown_timeout = shutdown_timeout
  @openapi = openapi
end

Instance Attribute Details

#api_key_authObject

Returns the value of attribute api_key_auth.



344
345
346
# File 'lib/spikard/config.rb', line 344

def api_key_auth
  @api_key_auth
end

#compressionObject

Returns the value of attribute compression.



344
345
346
# File 'lib/spikard/config.rb', line 344

def compression
  @compression
end

#enable_request_idObject

Returns the value of attribute enable_request_id.



344
345
346
# File 'lib/spikard/config.rb', line 344

def enable_request_id
  @enable_request_id
end

#graceful_shutdownObject

Returns the value of attribute graceful_shutdown.



344
345
346
# File 'lib/spikard/config.rb', line 344

def graceful_shutdown
  @graceful_shutdown
end

#hostObject

Returns the value of attribute host.



344
345
346
# File 'lib/spikard/config.rb', line 344

def host
  @host
end

#jwt_authObject

Returns the value of attribute jwt_auth.



344
345
346
# File 'lib/spikard/config.rb', line 344

def jwt_auth
  @jwt_auth
end

#max_body_sizeObject

Returns the value of attribute max_body_size.



344
345
346
# File 'lib/spikard/config.rb', line 344

def max_body_size
  @max_body_size
end

#openapiObject

Returns the value of attribute openapi.



344
345
346
# File 'lib/spikard/config.rb', line 344

def openapi
  @openapi
end

#portObject

Returns the value of attribute port.



344
345
346
# File 'lib/spikard/config.rb', line 344

def port
  @port
end

#rate_limitObject

Returns the value of attribute rate_limit.



344
345
346
# File 'lib/spikard/config.rb', line 344

def rate_limit
  @rate_limit
end

#request_timeoutObject

Returns the value of attribute request_timeout.



344
345
346
# File 'lib/spikard/config.rb', line 344

def request_timeout
  @request_timeout
end

#shutdown_timeoutObject

Returns the value of attribute shutdown_timeout.



344
345
346
# File 'lib/spikard/config.rb', line 344

def shutdown_timeout
  @shutdown_timeout
end

#static_filesObject

Returns the value of attribute static_files.



344
345
346
# File 'lib/spikard/config.rb', line 344

def static_files
  @static_files
end

#workersObject

Returns the value of attribute workers.



344
345
346
# File 'lib/spikard/config.rb', line 344

def workers
  @workers
end