English for Loco.rs Developers
Learn the English vocabulary for Loco, the Rails-inspired Rust web framework: scaffolding, controllers, and explaining batteries-included conventions.
Loco deliberately borrows Rails’ conventions and brings them to Rust, so a lot of the vocabulary is about mapping familiar “batteries-included” concepts — scaffolding, generators, background jobs — onto a statically typed, compiled language, and explaining why that trade-off is worth it.
Key Vocabulary
Batteries-included — a framework philosophy where common needs (authentication, background jobs, mailers, ORM) ship built in and pre-wired, rather than requiring the developer to assemble them from separate crates. “We didn’t have to evaluate five different crates for background jobs and auth — Loco is batteries-included, so those pieces are already wired up and ready to configure.”
Scaffolding / code generation — CLI commands that generate boilerplate files (models, controllers, migrations) from a single command, following established conventions, so a new resource can be created quickly and consistently. “Instead of hand-writing the model, controller, and migration separately, we ran the scaffolding command and got all three generated in a consistent shape.”
Convention over configuration — the design principle that the framework assumes sensible defaults for file layout and naming, reducing the number of decisions and config files a developer needs to write. “We’re not debating where this file should live — convention over configuration means Loco already has an opinion, and we’re following it.”
Controller / route handler — the layer of code that receives an HTTP request, coordinates any needed logic, and returns a response, analogous to controllers in Rails or handlers in other Rust web frameworks. “This logic doesn’t belong directly in the controller — it should live in the model or a service layer, with the controller just orchestrating the call.”
Background job / worker — asynchronous, queued work that runs outside the request-response cycle, useful for anything that shouldn’t block the user waiting on an HTTP response. “Sending this email inline is going to slow down the response — let’s push it to a background job instead so the request returns immediately.”
Common Phrases
- “Did we scaffold this resource, or is this hand-written boilerplate we should replace with a generator?”
- “Is this decision actually a convention Loco already has an opinion on, or do we need our own configuration here?”
- “Should this logic really live in the controller, or does it belong in a service or model instead?”
- “Is this slow because it’s running inline — should this be a background job?”
Example Sentences
Explaining the framework choice: “We chose Loco specifically because it’s batteries-included — the team didn’t want to spend the first month assembling auth, jobs, and an ORM from five separate crates.”
Reviewing a pull request: “This controller is doing too much — let’s move the business logic into a service and keep the controller focused on request and response handling.”
Discussing performance: “Sending the confirmation email inline is adding real latency to signup — moving it to a background job should fix that without touching the actual signup logic.”
Professional Tips
- Lead with batteries-included when explaining Loco to a Rust developer used to assembling frameworks from individual crates — it’s the single biggest selling point to communicate up front.
- Use scaffolding commands consistently across the team so generated code stays uniform — deviating early creates inconsistency that’s hard to unwind later.
- Push back diplomatically in reviews when a controller accumulates business logic that should live elsewhere — it’s a common anti-pattern carried over from looser frameworks.
- Default anything with unpredictable latency (emails, external calls, exports) to a background job rather than handling it inline in the request cycle.
Practice Exercise
- Explain to a Rust developer unfamiliar with Rails-style frameworks what “batteries-included” means in practice.
- Describe why scaffolding commands help keep a codebase consistent across a team.
- Write a sentence recommending that a specific piece of logic move from a controller to a background job.