Most SaaS ideas fail before launch, not because theyβre bad, but because the founder got bored building auth and billing.
π https://t.co/x8zss0BouE
In Rails 8, adding a `!` to a type automatically makes the column non-nullable.
These small additions are what make Rails great! π
π https://t.co/V5SQqFlLFV
NOBODY CODES ANYMORE.
So I built LaunchKit for the agents too!
Rails 8, all the boring stuff already built, full documentation, and an AGENTS.md that helps your coding agent understand the entire codebase.
https://t.co/V5SQqFlLFV
In Rails 8, you can now access your notes directly in the browser by visiting `GET /rails/info/notes`!
Small details like this are why we love @rails! π
Two Rails 8 defaults that don't compose.
rate_limit counts in your cache store. Solid Cache increments under SELECT ... FOR UPDATE, which locks nothing when there's no row yet.
First hit from a new IP, two at once, both write 1. A limit of 10 admits 11.
https://t.co/LC62uRQkfb
Rails 7.1 added a neat little upgrade to rails routes --expanded: Source Locations! π
Now you can instantly see exactly where each route is defined in your codebase.
#rubyonrails
Ruby makes it so easy to keep user input within a safe range using `clamp()`! π
Perfect for forcing a value between MIN and MAX without extra ifs.
π https://t.co/x8zss0BouE
Ruby makes it so easy to keep user input within a safe range using `clamp()`! π
Perfect for forcing a value between MIN and MAX without extra ifs.
π https://t.co/x8zss0BouE
Great question! π
Yep, it composes with custom contexts too.
`except_on:` accepts a symbol or an array of contexts, just like `on:`.
So you can do `except_on: [:draft, :some_custom_context]`.
Conceptually, itβs the inverse of `on:`: the validation runs in every context except the ones you explicitly exclude.
Thatβs what makes it nice for draft workflows.
Hope this helps! π