#679 — November 23, 2023 |
|
Ruby Weekly |
TestProf III: Guided and Automated Ruby Test Profiling — TestProf is a long standing suite of tools to improve test suite performance, and it’s ‘back’ with lots of new features and enhancements. These include a playbook for getting started with test suite profiling, a new ‘autopilot’ CLI tool to automate the generation and merging of StackProf reports, and MemoryProf, a system that tracks memory usage during test runs. Vladimir Dementyev |
Free eBook: Advanced Database Programming with Rails and Postgres — Learn about subqueries, materialized views, and custom data types in Postgres and Rails. We walk through realistic real-life examples, translating first into SQL, and then into Rails code. Every example comes with source code so you can follow along. pganalyze sponsor |
Shaping the Future of Ruby and Kafka Together with rdkafka-ruby — After initially forking the rdkafka-ruby gem, the creator of Karafka (a popular Kafka processing framework for Ruby and Rails) is collaborating with AppSignal to govern and improve the core gem for Karafka and the Ruby community. Maciej Mensfeld (AppSignal Blog) |
|
📕 Articles & Tutorials |
A Look into Feedbin, the Ruby Open Source RSS Reader — Lucian takes a dig into the source behind Feedbin (a popular, though not popular enough IMHO, feed reader) and looks at how its structured and what dependencies make it tick. If you can’t tell, I’m a huge fan of Feedbin and recommend you all sign up. Lucian Ghinda |
Three Ways to Model an Associated Collection in Rails — Comparing using Postgres’s array type and two join table based solutions. Dimiter Petrov |
On Building a Webhooks Service — Mike recently worked on building webhooks for PlanetScale, but here he shares the Rails models and basic approach used, in case it’s useful for you. Mike Coutermarsh |
Is Your Rails Version Lagging Behind? Try the Slow & Steady Way… 🐢 — Join the waitlist to Bonsai: Our fixed-cost, tech debt remediation service. Let us upgrade Ruby and Rails for you. Rails Upgrades on Autopilot sponsor |
What's a Counter Cache? — Running a separate query to count how many records are associated with another record is inefficient – counter caches have long made this situation more efficient. Jose Blanco |
For Clarity When Merging Hashes, Use Andy Croll |
Interactive Debugging Without the Need for Gems — Don’t forget that, with |
You Don’t Need Services (Whatever This Word Means) — “When it comes to Rails, if you enjoy it, then you’ll probably enjoy it even more if you restrain from introducing services, be it as a layer or as a system architecture.”
|
How to Use UUIDv7 for Primary Keys in Rails
|
🛠 Code & Tools |
Fuzzy Ruby Server: A Ruby Language Server for Large Codebases — If you think Solargraph is too slow and Ruby-LSP lacks features, this gem addresses those issues for VSCode and NeoVim users. Search for and peek at class, method, and variable definitions, find references, rename variables, and a few other tasks. Joel Korpela |
Split 4.0: Rack Based A/B Split-Testing Framework — A mature framework with robust configuration and multiple options for determining the winning option. Split |
Got a Problem That Could Use a Rubber Duck Session? — Here’s one better. Request a pairing session with one of our senior devs. We’ll get you moving in the right direction. Test Double sponsor |
Universal ID: URL-Safe String Serialization for Any Object — The use cases here are exciting and include scenarios such as inter-service communication via a web boundary, UX state management across sessions, and audit logging, to name a few. Nate Hopkins |
A Script for Renaming a RubyGem — If you start working on a gem and then want to change the name, you might need to do this. But be sure to check your new name is available! Which leads us to.. Brad Gessler |
Name Checker: Check if a Project Name is Taken — An online tool that checks a bunch of different package registries (npm, GitHub, GitLab, PyPI, Maven, RubyGems, Go packages, Rust crate, etc.) to see if the name is used by another project. Todd Cooke |
|
|