API Reference
Programmatic API for FakeDataDSL.
Registry
The Registry class manages schema definitions.
Loading Schemas
registry = FakeDataDSL::Registry.new
# Load from file
registry.load_file('schemas/user.dsl')
# Load from string
registry.load_string(<<~DSL)
User:
id: uuid
name: name
DSL
# Load from directory
registry.load_dir('schemas/')
Accessing Schemas
# Get a schema
schema = registry.schema('User')
# Check if schema exists
if registry.schema?('User')
# ...
end
# List all schema names
names = registry.names
# => ["User", "Order", "Product"]
Schema
The Schema class represents a data schema.
Generating Data
schema = registry.schema('User')
# Generate single record
record = schema.generate
# => { "id" => "...", "name" => "..." }
# Generate multiple records
records = schema.generate_many(10)
# => Array of 10 records
# Stream records (lazy)
schema.generate_many_stream(1000).each do |record|
# Process each record
end
Configuration
# Set default mode
schema.default_mode = :edge
# Generate with specific mode
record = schema.generate(mode: :invalid)
# Generate with overrides
record = schema.generate(overrides: { "name" => "Custom Name" })
Configuration
Global configuration:
FakeDataDSL.configure do |config|
# Seed for deterministic generation
config.seed = 12345
# Resource limits
config.max_recursion = 10
config.max_array_size = 1000
config.max_text_length = 10000
config.max_latency = 5000
# Observability
config.logger = Logger.new(STDOUT)
config.metrics_collector = MyMetricsCollector.new
config.on_field_generated = proc do |schema, field, value|
# Custom callback
end
end
Custom Types
Register custom types:
FakeDataDSL.register_type(:my_type) do |rng, context, args|
# Generate value
"custom_value_#{rng.int(1, 100)}"
end
# Use in schema
MySchema:
value: my_type
Custom Functions
Register custom functions:
FakeDataDSL.register_function(:slugify) do |context|
name = context["name"] || "default"
name.downcase.gsub(/\s+/, '-')
end
# Use in schema
User:
name: name
slug: custom(:slugify)
Custom Behaviors
Register custom behaviors:
FakeDataDSL.register_behavior(:my_behavior) do |field, args|
# Custom behavior logic
end
# Use in schema
User:
name: name @my_behavior(arg1, arg2)
See Also
- Getting Started - Basic usage
- DSL Reference - DSL syntax