docker-swarm
Propósito
ORM ligero y cliente API para Docker Swarm en Ruby. Expone las primitivas del Docker Engine (Service, Node, Task, Container, Network, Volume, Config, Secret, Swarm, System, Image) como modelos ActiveModel con CRUD, validaciones y logs estructurados KV. Excon directo sobre el socket Unix (default) o TCP.
Setup
# Gemfile
gem 'docker-swarm', '~> 0.6'
bundle install
Quick start:
require 'docker_swarm'
DockerSwarm.configure do |config|
config.socket_path = "unix:///var/run/docker.sock" # default
config.log_level = Logger::INFO
end
DockerSwarm::System.up # => "OK"
DockerSwarm::Service.all # => [#<Service ...>, ...]
DockerSwarm::Service.find("svc-id") # => nil si no existe
Para el contrato completo de la gema (símbolos públicos, gotchas, integración) ver skill/SKILL.md.
Índice de artefactos
Documentación normada (RFC-001) por capa:
| Capa | Artefacto | Estado |
|---|---|---|
| Datos | — | n/a (gema sin DB) |
| Glosario | docs/glossary/glossary.md |
F1 completo |
| Comportamiento | docs/behavior/behavior.md |
F1 backfill on-demand (8 flujos) |
| API (operaciones) | — | F2 pendiente; contrato resumido inline en skill/SKILL.md |
| Interfaz | — | F2 pendiente; contrato resumido inline en skill/SKILL.md |
| Topología | — | F2 pendiente |
| Eventos | — | n/a (la gema no emite eventos) |
n/a = no aplica al tipo de repo. F2 pendiente = capa declarada en la RFC pero todavía no implementada en dev-structure; el contenido relevante vive transitoriamente en skill/SKILL.md (RFC-008 §2 coexistencia transitoria).
Desarrollo
bundle exec rspec --tag ~type:integration # unit suite
bundle exec rspec # incluye integration (requiere Docker socket)
bundle exec rubocop -a # lint
Release: /gem-release (publica a RubyGems via GitHub Action al tag v*).
Licencia
MIT — ver LICENSE.