mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-05-14 16:38:40 +08:00
2.2 KiB
2.2 KiB
paths
| paths | |||||
|---|---|---|---|---|---|
|
Ruby Patterns
This file extends common/patterns.md with Ruby and Rails specific content.
Rails Way First
- Start with plain Rails MVC and Active Record conventions for small and medium features.
- Introduce service objects, query objects, form objects, decorators, or presenters when the model/controller boundary is carrying multiple responsibilities.
- Name extracted objects after the business operation they perform, not after generic layers like
ManagerorProcessor.
Persistence
- Prefer PostgreSQL for multi-host production Rails apps unless the existing platform has a clear reason for MySQL or SQLite.
- Treat Rails 8 SQLite-backed defaults as viable for single-host or modest deployments, not as an automatic fit for shared multi-service systems.
- Keep raw SQL behind query objects or model scopes and parameterize every dynamic value.
Background Jobs And Runtime Services
- Use Solid Queue for greenfield Rails 8 apps with modest throughput and simple deployment needs.
- Use Sidekiq when the app needs mature observability, high throughput, existing Redis infrastructure, or Pro/Enterprise features.
- Use Solid Cache and Solid Cable when their deployment model matches the app; use Redis when shared cross-service behavior, high fanout, or advanced data structures matter.
Frontend
- Prefer Hotwire with Turbo, Stimulus, Importmap, and Propshaft for server-rendered Rails apps.
- Use React, Vue, Inertia.js, or a separate SPA when interaction complexity, existing product architecture, or team ownership justifies the extra client surface.
- Keep view components, partials, and presenters focused on rendering decisions; keep persistence and authorization out of templates.
Authentication
- Use the Rails 8 authentication generator for straightforward session auth and password reset needs.
- Use Devise or another established auth system when requirements include OAuth, MFA, confirmable/lockable flows, multi-model auth, or a large existing Devise footprint.
Reference
See skill: backend-patterns for service boundaries and adapter patterns.