In this series: Part 1: Practical Railway-Oriented Pipelines in Ruby Part 2: User input, errors and metadata Part 3: Extending pipelines Part 4: Middleware Part 5: Testing pipelines In the previous article in this series I showed how to extend the basic pipeline with domain-specific steps and helpers. Here I’ll show how to add middleware to the pipeline, to add tracing, logging, caching, and other cross-cutting concerns. Middleware Middleware is a bit of code that wraps around each step in ...