Overview
Lutaml::Model uses an adapter pattern to support multiple serialization libraries. You must configure which adapters to use for each format.
Basic configuration
Use Lutaml::Model::Config.configure to set adapters:
require 'lutaml/model'
Lutaml::Model::Config.configure do |config|
config.xml_adapter_type = :nokogiri
config.json_adapter_type = :standard_json
config.yaml_adapter_type = :standard_yaml
config.toml_adapter_type = :toml_rb
config.hash_adapter_type = :standard_hash
endAvailable adapters
XML adapters
| Adapter | Description |
|---|---|
| Most compatible, based on libxml2. Requires native extensions. |
| Fastest performance. Native C extensions. |
| Pure Ruby. No compilation needed. Opal-compatible. |
JSON adapters
| Adapter | Description |
|---|---|
| Ruby standard library. No extra gems needed. |
| Common interface wrapper for multiple JSON libraries. |
| Fast C-based parser. Excellent performance. |
YAML adapter
| Adapter | Description |
|---|---|
| Psych (Ruby standard library). No extra gems needed. |
TOML adapters
| Adapter | Description |
|---|---|
| Enhanced fork. Better performance on non-Windows platforms. |
| Pure Ruby. TOML v1.0.0 compatible. Required on Windows. |
The :tomlib adapter is not available on Windows due to segmentation fault issues. On Windows, :toml_rb is automatically used as the default. |
Configuration with class references
For advanced use, specify adapter classes directly:
require 'lutaml/model'
require 'lutaml/xml/adapter/nokogiri_adapter'
require 'lutaml/json/adapter/standard_adapter'
require 'lutaml/yaml/adapter/standard_adapter'
require 'lutaml/toml/adapter/toml_rb_adapter'
Lutaml::Model::Config.configure do |config|
config.xml_adapter = Lutaml::Xml::Adapter::NokogiriAdapter
config.json_adapter = Lutaml::Json::Adapter::StandardAdapter
config.yaml_adapter = Lutaml::Yaml::Adapter::StandardAdapter
config.toml_adapter = Lutaml::Toml::Adapter::TomlRbAdapter
endDefault configuration
If not configured, Lutaml::Model uses these defaults:
-
XML:
:nokogiri -
JSON:
:standard(or:standard_jsonas an alias) -
YAML:
:standard(or:standard_yamlas an alias) -
Hash:
:standard(or:standard_hashas an alias) -
TOML:
:tomlibon non-Windows,:toml_rbon Windows
When to configure
Configure adapters in one of these locations:
- For applications
-
In an initializer or early-loading file
- For gems
-
Let end users configure adapters (document the requirement)
- For testing
-
In
spec_helper.rbor test setup
# spec/spec_helper.rb
require 'lutaml/model'
Lutaml::Model::Config.configure do |config|
config.xml_adapter_type = :nokogiri
config.json_adapter_type = :standard_json
config.yaml_adapter_type = :standard_yaml
config.toml_adapter_type = :toml_rb
endAdapter selection guide
Choose XML adapter based on
-
Nokogiri: Most projects (default, best compatibility)
-
Ox: Performance-critical applications
-
Oga: Pure Ruby environments, Opal/JavaScript compilation