皆様こんにちは、メドピアのサーバーサイドエンジニアの内藤(@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: Latest posts
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
✨This talk was recorded at ElixirConf US 2025. If you're curious about our upcoming event, check https://elixirconf.com✨ We’ve built something remarkable wit...| YouTube
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
こんにちは、 id:sezemi です。 息子が、所属するサッカークラブの初めての公式戦でスタメンを外され、試合の 3/4 が終了したところで交代出場というほろ苦デビューを飾りました。 試合後ふてくされていた息子に、妻が一喝し、そのまま夜の 21 時から練習に行くという、なかなかのスポ根ドラマが繰り広げられています。 がんばれ、息子氏。 さて、そんな熱いドラマ...| ANDPAD Tech Blog
アンドパッドは関西Ruby会議08に Drinkup スポンサーとして協賛します! 2025年6月28日(土)に京都の先斗町歌舞練場で開催される関西Ruby会議08にアンドパッドは協賛します。Drinkup Sponsor として "晩餐会" を開催します。 regional.rubykaigi.org 前夜を彩る晩餐会 関西Ruby会議08を前日から盛り上げるべく、京都の東華菜館というとても歴史のある中華料理の老舗で、豪華な晩餐会を行...| ANDPAD Tech Blog
こんにちは、 id:sezemi です。 私と同様に RubyKaigi 2025 が終わっていない皆さまもいらっしゃるかと思います。 そこで今回は RubyKaigi 2025 でアンドパッドから登壇したスピーカー 4 名に、発表を終えた余韻を書いてもらいました !! スピーカーと発表タイトルはこちらです。 Day 1: youchan "dRuby on Browser Again !" Day 2: ydah "Dissecting and Reconstructing Ruby Syntactic Structures" Day 2: hasumikin "Micro...| ANDPAD Tech Blog
こんにちは、大阪万博に行ってきて大量のミャクミャクグッズを買ってしまい、部屋のどこをみてもミャクミャクに囲まれて暮らしている柴田です。 今日は最近力を入れている Ruby を Windows で開発するための環境についてご紹介します。 Windows 向け Ruby の歴史 Ruby を使うためには自分で Ruby インタプリタをコンパイルして作成するか、誰かが作成した Ruby インタプリタ...| ANDPAD Tech Blog
How to use html-pipeline in| /dev/posts/
Bundler is a tool to manage Ruby gem| /dev/posts/
Contribute to basecamp/once-campfire development by creating an account on GitHub.| GitHub
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
Yeah you did! Matching strings is easy, right up until it isn’t. Most programming languages give you a double-equals operator or maybe an eq method. We will focus on Ruby here. Put in two strings and you get out a true or a false. irb(main):001> 'easy' == 'easy' => true This works great on two […] The post Did you mean Jaro-Winkler? appeared first on Simple Thread.| Simple Thread
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
The surgical breakdown of a 1.6k LOC Ruby monolith into focused modules. Or: how I performed open-heart surgery on a dying codebase and lived to tell the tale.| Seuros Blog
How working with JRuby 10 and Rails 8 changed my perspective on the JVM, one reluctant commit at a time.| Seuros Blog
How I escaped the zoo of monkey patches and built a clean, Rails 8-friendly PostGIS adapter gem that actually works with modern Rails.| Seuros Blog
How building a Cypher DSL taught me more about framework design, why supporting legacy is a trap.| Seuros Blog
How AI coding assistants are influencing API design in Ruby, and whether we're reinforcing old patterns or creating new opportunities.| Seuros Blog
As I mentioned at the start of my Optimizing Ruby’s JSON series of posts, performance isn’t why I candidated to be the new gem’s maintainer.| byroot’s blog
Your code using the /o modifier Source: wikipedia Hi there! Do you like Regex? Do you like performance? Do you like creating confounding bugs for yourself rooted in the mechanics of the Ruby VM itself? If you said yes to all of the above, have I got a feature for you! But first, let’s start with a story. The cliffs of insanity I was recently reviewing some code, and part of the functionality was about matching.| jpcamara.com
The videos for RailsConf 2025 have been posted on YouTube, which includes my session| Kevin Murphy
Introducing Passive Queue - the Rails background job adapter that achieves perfect zen through non-execution. 100% success rate, 0ms processing time, infinite scalability.| Closer to Code
Here at the Science History Institute, we have a fairly small, but growing, body of video/film in our Digital Collections, at present just over 100 items, around 70 hours total. We wanted to add tr…| Bibliographic Wilderness
I’ve been doing the Weekly Challenges. The latest involved string manipulation. (Note that this ends today.)| RogerBW's Blog
Nithin Bekal's blog about programming - Ruby, Rails, Vim, Elixir.| nithinbekal.com
Deep dive into solving rdkafka's compilation nightmare: static linking, cross-platform builds, security challenges, and the CI/CD complexity behind precompiled Ruby gems.| Closer to Code
A major release of Bundler is finally happening, consolidating unreleased major| bundler.io
お知らせ 先日もこのブログでお知らせした、TokyoWomen.rb #1 がいよいよ 2025/3/1(土) に開催されます!前回のお知らせではまだ登壇者や登壇内容が未定でしたが、イベントのタイムスケジュールも確定しました。 当日はこんな発表が行われる予定です! 【招待講演】「たのしいSocketのしくみ / Socket Under a Microscope」by しおい 【基調講演】「Rubyと自由とAIと」by 鳥井雪 「Ruby ...| give IT a try
はじめに みなさんはTokyoGirls.rbを覚えていらっしゃるでしょうか? 2019年に僕と有志のRubyistで主催した、「女性も参加しやすい(でも女性限定ではない)Ruby勉強会」です。 techplay.jpVol.1の開催レポートはこちらにあります。 blog.jnito.comこちらはVol.2の開催レポートです。 blog.jnito.comできればVol.3、Vol.4と、その後も活動を続けたかったのですが、そのあと新型コロナがやっ...| give IT a try
お知らせ Ruby界隈のクリスマスの風物詩、Rubyのニューバージョンリリースが今年もやってきました。www.ruby-lang.orgこれに合わせて拙著「プロを目指す人のためのRuby入門(通称・チェリー本)」も、最新バージョンであるRuby 3.4と本書の差異をまとめた記事を公開しています。qiita.com概要は以下の通りです。 エラーメッセージの表示形式が変わった(本書全般) irb上で表...| give IT a try
お知らせ またまたやります、コードレビューライブ! というわけで、弊社ソニックガーデン主催の 第5回スキルアップ勉強会「コードレビューライブ 〜伊藤淳一からの挑戦状 part2〜」 のお知らせです。sonicgarden.connpass.com開催日時は2024年12月9日(月) 20時です。 今回もオンライン開催ですので、みなさんどうぞお気軽にご参加ください! 「コードレビューライブ」って何...| give IT a try