Skip to content

[DO NOT MERGE] PoC on Ruby DSL for configurable document types#11227

Draft
ryanb-gds wants to merge 1 commit intomainfrom
document-dsl
Draft

[DO NOT MERGE] PoC on Ruby DSL for configurable document types#11227
ryanb-gds wants to merge 1 commit intomainfrom
document-dsl

Conversation

@ryanb-gds
Copy link
Contributor

This commit includes a basic DSL for configurable document types. It allows us to declare forms, block content schema, settings and metadata using Ruby rather than JSON, which opens up some interesting possibilities such as:

  • easily sharing field definitions across types (just declare a method in the DSL for commonly used fields such as the body field)
  • using the ActiveModel API directly from inside the DSL to declare attributes and validation - no more awkward JSON validation definitions
  • defining one-off Publishing API presentation logic easily from within the DSL, without having to provide a shared method for it as a payload builder
  • making the config self-validating - we can raise exceptions if it's invalid so the type won't even build. Much easier to see what the problem is than with JSON schema validation, and to perform more complex types of validation

This commit includes a basic DSL for configurable document types. It allows us to declare forms, block content schema, settings and metadata using Ruby rather than JSON, which opens up some interesting possibilities such as:

- easily sharing field definitions across types (just declare a method in the DSL for commonly used fields such as the body field)
- using the ActiveModel API directly from inside the DSL to declare attributes and validation - no more awkward JSON validation definitions
- defining one-off Publishing API presentation logic easily from within the DSL, without having to provide a shared method for it as a payload builder
- making the config self-validating - we can raise exceptions if it's invalid so the type won't even build. Much easier to see what the problem is than with JSON schema validation, and to perform more complex types of validation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant