If you are a Rubyist, you’ve likely been writing # frozen_string_literal: true at the top of most of your Ruby source code files, or at the very least, that you’ve seen it in some other projects.| byroot’s blog
We appreciate the community’s patience and grace as we briefly paused our regular cadence of weekly updates. Out of respect for last week’s announcement from Matz and its importance to the community, we held this Q&A until today. For this week’s update, we’re sharing a| Ruby Central
The OTP plugin for Devise I help to maintain goes 2.0 this week. Here is what’s new and how to upgrade.| Notes to self
Today I released a new version of InvoicePrinter, my Ruby library for generating PDF invoices. Here’s what’s new.| Notes to self
👋🏼 This is part of series on concurrency, parallelism and asynchronous programming in Ruby. It’s a deep dive, so it’s divided into several parts: Your Ruby programs are always multi-threaded: Part 1 Your Ruby programs are always multi-threaded: Part 2 Consistent, request-local state Ruby methods are colorless The Thread API: Concurrent, colorless Ruby Bitmasks, Ruby Threads and Interrupts, oh my! (Concurrent, colorless Ruby) When good threads go bad: Concurrent, colorless Ruby Threa...| jpcamara.com
In this series we'll use SerpApi to scrape Google Maps reviews in order to find the best Sunday Roast the pubs of London have to offer!| SerpApi
In this series we'll use SerpApi to scrape Google Maps reviews in order to find the best Sunday Roast the pubs of London have to offer!| SerpApi
Testing Third-Party Dependencies at RailsConf 2020| Kevin Murphy
Our bathroom monitor deteriorated from a lack of interest. But with new technology, could I keep the tradition of PottyMon alive?| Atomic Spin
RubyGems and Bundler defined a generation of Ruby. But maybe it’s time to rethink them. Ruby Butler is my take — a fresh start, a new rb command, and a space to experiment again.| rubyelders.com
While working with a legacy BBj PRO/5 database for a client, we needed to set up a new CMS with multitenancy requirements. We were dealing with a slew of foreign tables representing the PRO/5 data, and each of the tables had a column for designating which tenant they belonged to. Let's talk about how we leveraged ActiveSupport::CurrentAttributes to solve this problem!| hashrocket.com
How I started learning Ruby and Ruby on Rails in 2025 and what my experience has been like so far.| Stonecharioteer on Tech
How to start really getting Ruby, especially blocks.| Stonecharioteer on Tech
How does `return` work within blocks, procs and lambda?| Stonecharioteer on Tech
Sending a message about why you shouldn't write `for` loops in Ruby.| Stonecharioteer on Tech
I spend time in scammer communities studying grift patterns. When I saw RubyCademy's "simple refactoring" advice, something clicked. This isn't about one bad tweet - it's about recognizing the laboratory system that turns confused developers into revenue streams.| Seuros Blog
This page was built by Mailchimp, but it's not loading correctly at the moment. We're aware of the problem and working to fix it.| mailchi.mp
Learn how to effectively use Ruby's pattern matching to locate elements within a hash array and handle exceptions| All about coding
Ruby on Rails uses `psych` for YAML locale processing that will load Yes/No, On/Off as booleans| All about coding
Learn how to avoid pitfalls in time comparisons in tests using the iso8601 method for consistency and reliability| All about coding
Testing Frozen String Literals in Production| intertwingly.net
Please contact me through Mastodon or email with any comments or corrections.| tomstu.art
This blog post is about different ways to reduce the chance of being blocked while web scraping search engines or other websites with Python, Ruby code examples.| SerpApi
The software industry is obsessed with the scale problem. We’re told to build for a million users before we have one. To architect for planet-wide distributi...| www.panasiti.me
Introduction Versatile as it is, SQLite still suffers from one major drawback. Which is write concurrency. SQLite, using the Write-Ahead-Log (WAL) journaling mode, supports an unlimited number of r…| Oldmoe's blog
皆様こんにちは、メドピアのサーバーサイドエンジニアの内藤(@naitoh)です。 社内の OpenID Connect Authorization Server を Golang 実装から Rails 実装にリプレイスしたので、技術ブログで紹介させていただきます。 前提 OpenID Connect は OAuth 2.0 認可プロセスを拡張し、認証目的で利用できるようにしたものになります。 Authorization Server は OpenID Provider (以下OP) とも呼ばれ、OpenID Conn...| メドピア開発者ブログ
gem.coop| gem.coop
Joel Drapper's technical investigation reveals the smoking gun - Ruby Central's "security measures" left Andre with full production access while removing his GitHub permissions. David Rodriguez loses gem ownership with only 1 of 8 owners consenting. This wasn't security. It was theater with screenshots to prove it.| Seuros Blog - Navigation Logs from the Ruby Nebula
The smoking gun revealed - Shopify threatened to pull funding unless Ruby Central seized control of RubyGems. hsbt was the insider who enabled it. The rv project was seen as a threat. This is the full story of corporate capture.| Seuros Blog - Navigation Logs from the Ruby Nebula
Hours after Ruby Central's Q&A, board member Freedom Dumlao broke ranks to explain his vote. Martin Emde's devastating response exposes the lies Ruby Central told their own board.| Seuros Blog - Navigation Logs from the Ruby Nebula
Ruby Central's Q&A happened, but the real story emerged from a board member's confession and a maintainer's devastating rebuttal revealing the full scope of the governance breakdown.| Seuros Blog - Navigation Logs from the Ruby Nebula
Ruby Central forcibly removed the people who built RubyGems for over a decade, replacing them with a 'Director of Open Source' whose last Ruby code was a conference tutorial in 2010. This is the anatomy of a hostile takeover disguised as 'strengthening stewardship.'| Seuros Blog
Do you run Rails or pure Ruby applications on Heroku? If so, it's important to be aware of upcoming end-of-life (EOL) dates for both your stack and your Ruby version. The Heroku-20 stack, built on Ubuntu 20.04 LTS, will reach EOL for standard support in April 2025. Ruby 2.7 has already passed its EOL, meaning it's no longer receiving critical security updates. Continuing to run your app with either an outdated Ruby version or an unsupported Heroku stack exposes your application to increasing ...| Heroku
As a RubyGems security contributor, I watched Ruby Central's takeover unfold. My take on why necessary changes became a crisis of trust and governance.| Closer to Code
Our API backend service relies heavily on ActiveModel::Serializer for building response objects. We are using version 0.8 which hasn’t been updated for many years. As part of the effort of upgrading our service to Rails 5 (and eventually Rails 6), we start to seek ways to upgrade active_model_serializers. ActiveModel::Serializers From 0.8 to 0.10 The first candidate is the latest 0.10 of active_model_serializers. On one hand, our benchmark shows some really good performance improvement. In ...| Tech Notes from Steven
I’ve been doing the Weekly Challenges. The latest involved array pairs and accumulation. (Note that this ends today.)| RogerBW's Blog
I’ve spent 15 years of my life working on Bundler. When I introduce myself, people say “oh, the Bundler guy?”, and I am forced to agree. I didn’t come up with the original idea for Bundler (that was Yehuda). I also didn’t work on the first six months worth of prototypes. That was all Carl and Yehuda together, back when “Carlhuda” was a super-prolific author of Ruby libraries, including most of the work to modularize Rails for version 3.| André.Arko.net
JDK 25 is the newest LTS release since JDK 21, and it ships with a gaggle of amazing VM-level features. This post will cover one of the most important improvements for command-line ecosystems like JRuby’s: the AOTCache (ahead-of-time cache) and its ability to pre-optimize code for future runs.| blog.headius.com
Rails enums are a great way to model things like a status on an ActiveRecord model. They provide a set of human-readable methods while storing the result as an integer in the database.| Boring Rails: Skip the bullshit and ship fast |
When building features that accept user-generated content, you may need to display dynamic content based on what the user specifies. Imagine you want to users to be able to customize a welcome message sent from your application when they invite someone to their account.| Boring Rails: Skip the bullshit and ship fast |
Environment variables are a great way to configure your Rails apps. You can use the Rails.env variable to conditionally change behavior when you are in development/test or production. And you can add your own application specific variables for things like API tokens or global settings.| Boring Rails: Skip the bullshit and ship fast |
One of the most common Rails tips is to back up your ActiveRecord model validations with database level constraints.| Boring Rails: Skip the bullshit and ship fast |
A common question you may want to answer on user-input data is: what values have been entered and how many times is each one used?| Boring Rails: Skip the bullshit and ship fast |
In almost all email programs, you can add a display name before your email address like so:| Boring Rails: Skip the bullshit and ship fast |
Custom Rails helpers modules are often overlooked, but they can be a great option for building lightweight components and reducing boilerplate in your Stimulus controllers.| Boring Rails: Skip the bullshit and ship fast |
Often you’ll have an application screen like this:| Boring Rails: Skip the bullshit and ship fast |
Hotwire is a new suite of frontend tools from Basecamp for building “reactive Rails” apps while writing a minimal amount of JavaScript.| Boring Rails: Skip the bullshit and ship fast |
If you’re trying to write a tricky ActiveRecord query that includes joins, complex where clauses, or selecting specific values across tables, it can be hard to remember every part of the ActiveRecord DSL.| Boring Rails: Skip the bullshit and ship fast |
One of the best parts about ActiveRecord is the chainable query interface:| Boring Rails: Skip the bullshit and ship fast |
It’s a great idea to make your database and application validations match. If you have validates :name, presence: true in your model, you should pair it with a not null database constraint. Unique validations should be paired with a UNIQUE database index.| Boring Rails: Skip the bullshit and ship fast |
Breadcrumbs are a common UI pattern in most software applications. Rails has no built-in tools specifically for breadcrumbs, and while thereare ahandfulof existinggems, I think this is something you can easily implement in your own app with just a few lines of code.| Boring Rails: Skip the bullshit and ship fast |
If you follow a strict REST / nested resources approach to building your Rails app, you might get sick of repeating common controller actions.| Boring Rails: Skip the bullshit and ship fast |
Sometimes want to skip certain validations on your database models. Maybe you have a multi-step wizard or want admins to have more freedom in changing data.| Boring Rails: Skip the bullshit and ship fast |
You can’t prove a negative, but what about querying a database for a negative? While the majority of the time you are writing queries to find data, there are some cases when you want the opposite: writing a query that looks for the absence of data.| Boring Rails: Skip the bullshit and ship fast |
Sometimes a feature in your application will involve a back-and-forth between multiple users. When it comes time to write an automated system test, you can easily simulate switching between users using Capybara’s using_session helper.| Boring Rails: Skip the bullshit and ship fast |
Rails has a great, expressive term called pluck that allows you to grab a subset of data from a record. You can use this on ActiveRecord models to return one (or a few) columns.| Boring Rails: Skip the bullshit and ship fast |
When it comes to compare dates, for some reason my brain really struggles. I mix up < and >= all the time and end up flipping them.| Boring Rails: Skip the bullshit and ship fast |
One reason I love writing Ruby is that it’s optimized for programmer happiness. The Ruby community values code that is super readable.| Boring Rails: Skip the bullshit and ship fast |
Writing blog posts in Markdown is just great. This blog is written in Markdown!| Boring Rails: Skip the bullshit and ship fast |
It’s common to use environment variables to configure external services or other options in a Rails app. These ENV_VARS usually are not checked into source control, but rather configured per environment.| Boring Rails: Skip the bullshit and ship fast |
Ever get frustrated trying to search through code on GitHub? Or wish you could put a breakpoint in a gem so you could figure out what it was doing?| Boring Rails: Skip the bullshit and ship fast |
A common practice in Rails apps is to extract logic into plain-old Ruby objects (POROs). But often you are passing data to these objects directly from controller params and the data comes in as strings.| Boring Rails: Skip the bullshit and ship fast |
The Rails helper excerpt can extract a chunk of text that matches a certain phrase, no matter where in the string it is.| Boring Rails: Skip the bullshit and ship fast |
We’re all familiar with the classic Rails link_to helper. But did you know there is a link_to_unless_current variant?| Boring Rails: Skip the bullshit and ship fast |
Sometimes you need to keep track of how many times you’ve looped when rendering some views, for instance to alternate background colors to create a “striped” table.| Boring Rails: Skip the bullshit and ship fast |
Use the Rails highlight helper to wrap search result matches in <mark> tags.| Boring Rails: Skip the bullshit and ship fast |
This year I spent a bit of time playing with Python, after having mostly ignored it since 2005 when was learning it originally. I did like Python back then, but a few years afterwards I discovered Ruby and quickly focused my entire attention on it.| (think)
Recently I’ve been wondering how to name Ruby methods that have predicate looking names (e.g. foo?), but don’t behave like predicates - namely they return other values besides the canonical true and false.1 This came up in the context of RuboCop, in case someone’s wondering. ↩| (think)
How the observability industry's vendor lock-in tactics led to building Lapsoss and the Liberation Stack - community-owned tools that put developers back in control| Seuros Blog - Navigation Logs from the Ruby Nebula
When half the mining fleet switched to using simple Rails enums for state management, chaos ensued. Ships transitioned from operational to vacuum exposure without validation, weapons fired randomly, and life support systems failed catastrophically. This is the story of how Captain Seuros proved that enums are not state machines, and why the state_machines gem saved the fleet from disaster.| Seuros Blog - Navigation Logs from the Ruby Nebula
When a quantum shapeshifter infiltrates the Federation's antimatter supply chain, Captain Cyrel of the USS ActiveCypher must use graph database technology to track an enemy that exists in relationships, not rows. A thrilling tale of how ActiveCypher brings Rails conventions to the graph database revolution.| Seuros Blog - Navigation Logs from the Ruby Nebula
How a Moroccan captain finally implemented the most requested state_machines feature after 9 years of maintainer paralysis. Featuring the RMNS Atlas Monkey and emergency warp protocols.| Seuros Blog - Navigation Logs from the Ruby Nebula
Legacy support isn't just technical debt—it's innovation debt. Here's why I finally bumped my Ruby gem to require version 3.2.0 and why you should stop dragging corpses through your codebase.| Seuros Blog - Navigation Logs from the Ruby Nebula
After years of comfortable cruising through the Ruby nebula, I discovered something that changed everything. This is the story of why a die-hard Rubyist decided to learn Go—and what I found on the other side.| Seuros Blog
Stop blocking Ruby threads with Kafka. WaterDrop's transparent async support using fibers delivers 5x throughput without callbacks or complexity.| Closer to Code
I’ve been doing the Weekly Challenges. The latest involved array analysis and matrix incrementing. (Note that this ends today.)| RogerBW's Blog
こんにちは、柴田です。やっとデス・ストランディング2の国道復旧もひと段落してトロフィーコンプリートまであと1つというところまで辿り着きました。 さて、今回は秋以降の活動のお知らせと、Rubyの内部的な仕組みに少し踏み込んで、多くのRubyistにおなじみの Pathname が、どのようにしてRubyのコア機能の一部になったのか、その背景と技術的な詳細を解説します。 ...| ANDPAD Tech Blog
こんにちは、hsbt です。デス・ストランディング2のストーリーをやっと終えることができて国道建設や補修、荷物運びに専念する日々が続いています。 本エントリでは、来月開催される Ruby Association Activity Report への登壇の紹介と最近の Ruby の開発で取り組んだことについてご紹介します。 Ruby Association Activity Report に登壇します。 2025年8月28日(木)にビジョンセンター品...| ANDPAD Tech Blog
How to use html-pipeline in| /dev/posts/
Bundler is a tool to manage Ruby gem| /dev/posts/
tl;dr https://gist.github.com/MaskRay/74cdaa83c1f4| MaskRay
If you’re the Acting Ensign Crusher of Rails developers, you’ve probably heard about background jobs but are a little lost. They’re essential for building modern, responsive applications. But let’s be honest, the thought of adding another service to your stack can be daunting. Redis is great, but it’s another thing to manage, another thing to […]| dominickm.com
After 15 years since the first reports ruby gems remain broken, even tough I wrote the patch that fixes everything years ago.| Felipe Contreras
Attended my first and last RailsConf in Philadelphia. The 36°C heat was brutal, but the conversations were worth it. Some observations about our aging community and why AI might be bad news for open source innovation.| Closer to Code
For the last ten years or so of working on Bundler, I’ve had a wish rattling around: I want a better dependency manager. It doesn’t just manage your gems, it manages your ruby versions, too. It doesn’t just manage your ruby versions, it installs pre-compiled rubies so you don’t have to wait for ruby to compile from source every time. And more than all of that, it makes it completely trivial to run any script or tool written in ruby, even if that script or tool needs a different ruby t...| André.Arko.net
I’ve been doing the Weekly Challenges. The latest involved array slicing and point filtering. (Note that this ends today.)| RogerBW's Blog
This post traces the decade-long evolution of Ruby Marshal deserialization exploits, demonstrating how security researchers have repeatedly bypassed patches and why fundamental changes to the Ruby ecosystem are needed rather than continued patch-and-hope approaches.| The Trail of Bits Blog
In two previous posts, I explained that one of the big blockers for Ractors’ viability is that while they’re supposed to run fully in parallel, in many cases, they’d perform worse than a single thread because there were numerous codepaths in the Ruby virtual machine and runtime that were still protected by the global VM lock.| byroot’s blog
自分の手元の環境でこんなことが起きた。 $ ruby -v ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin21] $ irb irb(main):001:0> "\x01\x80\x00\x00".index("\x01") => 0 irb(main):002:0> "\x01\x80\x00\x00".rindex("\x01") => 1 \x01 は 0 番目にしかないのだから、 .index でも .rindex でも 0 が返ってくるはずではないの?? 先に結論 きっかけ String#rindex の謎挙動…| すぎゃーんメモ
This is a quick & unpolished collection of my Ruby debugging tips and recommendations. You can use the Ruby LSP extension to connect to debug.gem too. It requires a slightly different launch.json configuration (example) and provides better error han...| Mostly Ruby DX
Introduction Ruby 3.4 isn’t just about shiny language features; it also comes with meaningful documentation updates. Some of these changes are reflected in the content of docs.ruby-lang.org, while others are behind the scenes in RDoc, the official do...| Mostly Ruby DX
As someone who genuinely cares about Ruby's developer experience, I've been thinking about Ruby's documentation for a while, especially after I became a maintainer of RDoc. And I'd like to share my thoughts on the current state of Ruby's documentatio...| Mostly Ruby DX
This cheatsheet can help you get started with ruby/debug as well as use it in your daily development. It's not an exhausting list of its features or commands, so please go through its document as well. If you're migrating from byebug, I also recommen...| Mostly Ruby DX
Link to Japanese version: https://techracho.bpsinc.jp/hachi8833/2022_09_01 (Hashnode has issues generating the right link for this url) Link to my talk: ruby/debug - The best investment for your productivity Switching to a new debugger and potentiall...| Mostly Ruby DX
Do you know Ruby's official debugger ruby/debug provides out-of-box integration with VSCode? If you haven't tried it yet or having difficulty making it work, I hope this short post will help you set it up. Basic Setup Install the VSCode rdbg extensi...| Mostly Ruby DX
Eliminating PostgreSQL catalog traversal overhead with local partition calculations for up to 20x faster hash partition queries.| Shayon Mukherjee
When you don’t need the whole slice file structure| katafrakt’s garden
The unfiltered story of Rails Lens: ten years of frustration, harassment, theft, and finally breaking free to build something better. From TOML discoveries to AI validation, this is how persistence beats pattern parasites.| Seuros Blog
After 12 years maintaining state_machines, I dropped Rails 7.1 support. This is the story of why forever backward compatibility kills innovation and how I'm building for the future, not maintaining the past.| Seuros Blog