Skip to content

Instantly share code, notes, and snippets.

@dvinciguerra
Created August 20, 2021 22:38
Show Gist options
  • Save dvinciguerra/af04eeb132adfb95a2332ef50b789ca0 to your computer and use it in GitHub Desktop.
Save dvinciguerra/af04eeb132adfb95a2332ef50b789ca0 to your computer and use it in GitHub Desktop.
Structurizr Ruby DSL that transpile to native Structurizr DSL
# frozen_string_literal: true
workspace do
system = nil
model do
user = person "User"
system = software_system "Software System" do
webapp = container "Web Application" do |webapp_container|
user.point_to webapp_container, label: "Uses"
end
container "Database" do |database_container|
webapp.point_to database_container, label: "Reads from and writes to"
end
end
end
views do |view|
system_context system do |context|
context.includes :all
context.auto_layout :lr
end
container system do |context|
context.includes :all
context.auto_layout :lr
end
view.theme :default
end
end
# frozen_string_literal: true
# reference: https://github.com/structurizr/dsl/blob/master/examples/deployment-groups.dsl
workspace do
api = nil
database = nil
model do
system = software_system "Software System" do
database = container "Database"
api = container "Service API"
api.point_to database, label: "Uses"
end
deployment_environment "Example 1" do
deployment_node "Server 1" do
container_instance api
container_instance database
end
deployment_node "Server 2" do
container_instance api
container_instance database
end
end
deployment_environment "Example 2" do
service_instance1 = deployment_group "Service Instance 1"
service_instance2 = deployment_group "Service Instance 2"
deployment_node "Server 1" do
container_instance api, service_instance1
container_instance database, service_instance1
end
deployment_node "Server 2" do
container_instance api, service_instance2
container_instance database, service_instance2
end
end
end
views do |view|
deployment :all, "Example 1" do |deploy|
deploy.includes :all
deploy.auto_layout
end
deployment :all, "Example 2" do |deploy|
deploy.includes :all
deploy.auto_layout
end
view.theme :default
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment