Janko Marohnić
janko.io
Janko Marohnić
@janko.io
Senior Ruby engineer, father, vegan. Creator of Shrine, rodauth-rails and vim-test.
Also, the page title (<title>) still mentions "Tailwind UI", which seems like it should be updated after the rename 😉
November 16, 2025 at 11:40 AM
Well, in my experience AI can’t write decent tests 😛

It doesn’t seem to think of reusing factories/fixtures, at least not fully.
November 4, 2025 at 4:20 PM
Even with Bundler checksums enabled? 🙂

We only have paid gems vendored for conveniece (Sidekiq/graphql-ruby Pro). But I always wished they waren’t commited to source control, because I want to treat them as external.
November 2, 2025 at 2:14 PM
How is that different from installing gems? Why don’t we vendor gems then?
November 1, 2025 at 7:47 AM
That part where I need to commit source code for a 3rd-party package into version control.
October 31, 2025 at 4:49 PM
OK, I guess Sorbet also does dynamic typechecking then.

What would you dislike about moving those type annotations into comments? I feel like you’d still write similar amount of code, unlike with RBS header files where you need to repeat method and class definitions.
October 31, 2025 at 3:11 PM
I watched the demo, and while impressive, I would like to not have a different method syntax.

Also, inline RBS supports static typechecking from what I understand, while I imagine this is only for runtime typechecking.

I also don’t like the look of those leading underscores 🙈
October 31, 2025 at 2:38 PM
I haven’t personally experienced many issues with environments differing, so it’s not a problem I’m eager to have solved.
October 31, 2025 at 2:34 PM
What is it about?
October 31, 2025 at 7:44 AM
It reminds me of me with HTTP/2, where by the time I started getting it and looking how to support it, h3 had already came out 😄
October 28, 2025 at 11:34 AM
To be clear, I'm referring to `ActionController::Base._prefixes` method. It's technically public, but the name indicates it maybe shouldn't be used.
October 27, 2025 at 6:40 PM
It seems I will do that in Ruby LSP land after all. I couldn't think of a sane interface for retrieving view prefixes from controller, and `_prefixes` seems kind of like private API anyway.
October 27, 2025 at 6:35 PM
Given that retrieving arguments of a `render` call is fairly easy, it makes sense for me that both Ruby LSP Rails and Herb do it, just for different purposes.

Ruby LSP Rails would use it to follow partial names, while Herb would use it for linting. So, I imagine them having different code.
October 27, 2025 at 6:32 PM
Absolutely, linting sounds like it should live entirely in the Herb language server. AFAIK Ruby LSP doesn't have knowledge of where we are in the ERB file.

Prism nodes contain location info, but I would assume they don't point to the actual location in the template.
October 27, 2025 at 6:29 PM
Yeah, that sounds useful in scenarios where "go to definition" should lead to specific part of the HTML+ERB template.

In my case, I just link to the start of the partial file.
October 27, 2025 at 6:24 PM
I like that Ruby LSP abstracts ERB away from me, so I only need to check the file extension. This could then theoretically work in pure Ruby templates as well, and possibly jbuilder, it's not tied to HTML+ERB files.

Is there an advantage of doing it within Herb?
October 27, 2025 at 1:04 PM