Now it’s an open @rubyonrails.org.web.brid.gy PR: Date.upcoming_date(month, day) 🎉
Proud to give back to the open-source community that gives us so much ❤️
Hope it gets merged 🤞
t.co/XD0hlDYenB
Now it’s an open @rubyonrails.org.web.brid.gy PR: Date.upcoming_date(month, day) 🎉
Proud to give back to the open-source community that gives us so much ❤️
Hope it gets merged 🤞
t.co/XD0hlDYenB
Test XPath expressions against HTML snippets right in the browser.
Built with Rails + Nokogiri, CodeMirror, and Catppuccin ✨
Perfect for experimenting with XPath expressions 🧪
👉 www.dotruby.com/tools/xpath-...
Test XPath expressions against HTML snippets right in the browser.
Built with Rails + Nokogiri, CodeMirror, and Catppuccin ✨
Perfect for experimenting with XPath expressions 🧪
👉 www.dotruby.com/tools/xpath-...
Big thanks to @jorgemanru and the @basecamp team 🙌
Full write-up 👉 www.dotruby.com/articles/add...
Big thanks to @jorgemanru and the @basecamp team 🙌
Full write-up 👉 www.dotruby.com/articles/add...
I wrote about this odd idea: “Rails without Ruby”
👉 dotruby.com/articles/rai...
I wrote about this odd idea: “Rails without Ruby”
👉 dotruby.com/articles/rai...
Most providers support plus addressing → just add +something before the @.
All emails still arrive in your inbox, and you can filter them easily.
Example: bob+needanothermail@gmail.com 📬
Most providers support plus addressing → just add +something before the @.
All emails still arrive in your inbox, and you can filter them easily.
Example: bob+needanothermail@gmail.com 📬
We discovered an underrated feature: :variants.
With just one magic suffix you can run old & new layouts in parallel — no JS, no cookies, just Rails ✨
Full write-up 👉 dotruby.com/articles/eas...
We discovered an underrated feature: :variants.
With just one magic suffix you can run old & new layouts in parallel — no JS, no cookies, just Rails ✨
Full write-up 👉 dotruby.com/articles/eas...
turbo_stream.toggle_css_class supports force:, just like the DOM API.
No need for manual logic — may the force: be with you 🛸✨
turbo_stream.toggle_css_class supports force:, just like the DOM API.
No need for manual logic — may the force: be with you 🛸✨
The hardest part? Finding the PDF form field names 🤯
We wanted to give back, so we built a tool to list them all:
dotruby.com/tools/hexapd...
Drag a PDF → see all field names → done ✅
The hardest part? Finding the PDF form field names 🤯
We wanted to give back, so we built a tool to list them all:
dotruby.com/tools/hexapd...
Drag a PDF → see all field names → done ✅
Instead of risking invalid or double ?s, use a proper helper that merges params safely. 👇
Instead of risking invalid or double ?s, use a proper helper that merges params safely. 👇
So I wrote a small helper method.
Sharing in case it helps someone — or if there’s a better way? 🤔👇
So I wrote a small helper method.
Sharing in case it helps someone — or if there’s a better way? 🤔👇
You can use .many? instead of count > 1 — more readable and sometimes faster!
💡 On relations: uses LIMIT 2
⚠️ On associations: loads all records
You can use .many? instead of count > 1 — more readable and sometimes faster!
💡 On relations: uses LIMIT 2
⚠️ On associations: loads all records
Turbo Drive intercepts clicks and replaces page content via fetch (not a full page reload) — and that breaks native #anchor scrolling.
Fix it with data-turbo="false"
Tamed the Turbo — anchor away! ⚓
Turbo Drive intercepts clicks and replaces page content via fetch (not a full page reload) — and that breaks native #anchor scrolling.
Fix it with data-turbo="false"
Tamed the Turbo — anchor away! ⚓
Always finding little gems in ERB 💎😍
Always finding little gems in ERB 💎😍
I wrote a small helper that uses model_name.human(count: ...) to do it the right way — fully i18n-ready.
Simple, readable, and it works with any model as long as it's been translated 😉
I wrote a small helper that uses model_name.human(count: ...) to do it the right way — fully i18n-ready.
Simple, readable, and it works with any model as long as it's been translated 😉
Use conditional_tag to wrap content in a tag only if a condition is true.
No more messy if blocks in ERB. Just clean, readable templates.
Discovered this gem thanks to @scarfacedeb 🙌
Use conditional_tag to wrap content in a tag only if a condition is true.
No more messy if blocks in ERB. Just clean, readable templates.
Discovered this gem thanks to @scarfacedeb 🙌
So I built github-repo-manager:
For when you're leaving a GitHub org and want to take all your repos without the manual drag-n-drop drama.
One script. No cardboard boxes. 🐙💼
github.com/elalemanyo/g...
So I built github-repo-manager:
For when you're leaving a GitHub org and want to take all your repos without the manual drag-n-drop drama.
One script. No cardboard boxes. 🐙💼
github.com/elalemanyo/g...
Check out get-smart by igorkasyanchuk — it shows handy Ruby & Rails tips during startup.
A clever gem with a thoughtful touch 💎✨
github.com/igorkasyanch...
Check out get-smart by igorkasyanchuk — it shows handy Ruby & Rails tips during startup.
A clever gem with a thoughtful touch 💎✨
github.com/igorkasyanch...
ActiveHashcash protects Rails applications against bots and brute force attacks without annoying humans.
github.com/BaseSecrete/...
ActiveHashcash protects Rails applications against bots and brute force attacks without annoying humans.
github.com/BaseSecrete/...
This promotes frame navigation to a full page visit, enhancing user experience.
📖 Learn more:
turbo.hotwired.dev/handbook/fra...
This promotes frame navigation to a full page visit, enhancing user experience.
📖 Learn more:
turbo.hotwired.dev/handbook/fra...
add this to your VS Code settings:
"remote.SSH.defaultExtensions"
now it auto-installs your favorite extensions when you connect
no more bare-bones VS Code sessions 🫠
add this to your VS Code settings:
"remote.SSH.defaultExtensions"
now it auto-installs your favorite extensions when you connect
no more bare-bones VS Code sessions 🫠
Just write Do and rotate it 90°
Boom 💥 You've got a minimalist one
Genius idea from @lopezcodes.bsky.social 👏
Just write Do and rotate it 90°
Boom 💥 You've got a minimalist one
Genius idea from @lopezcodes.bsky.social 👏
Made by github.com/lostintangent, who's behind lots of awesome dev tools. Definitely worth a follow!
github.com/lostintangen...
Made by github.com/lostintangent, who's behind lots of awesome dev tools. Definitely worth a follow!
github.com/lostintangen...
@andycroll.bsky.social @coolprobn.bsky.social @hansschnedlitz.com @RubyCademy @elalemanyo.bsky.social @David Heinemeier Hansson
But there are much more code samples to be inspired and write beautiful #Ruby
@andycroll.bsky.social @coolprobn.bsky.social @hansschnedlitz.com @RubyCademy @elalemanyo.bsky.social @David Heinemeier Hansson
But there are much more code samples to be inspired and write beautiful #Ruby
Same 😅
Now I just type :note, :tip, :warning, etc. and espanso.org fills it in for me ✨
Thanks terzi_federico for making this possible 🙌
Same 😅
Now I just type :note, :tip, :warning, etc. and espanso.org fills it in for me ✨
Thanks terzi_federico for making this possible 🙌
For has_one_attached or has_many_attached
Hope this helps someone save time! 👇
For has_one_attached or has_many_attached
Hope this helps someone save time! 👇