Ruby + Rails : Distilled
@distilled.skillstopractice.com
61 followers 160 following 18 posts
A collection of posts of interest to Ruby and Rails developers. Hand-picked, high signal, always on topic. Maintained by @skillstopractice.com Also available as a feed: https://bsky.app/profile/did:plc:ip3trmvdbnlm4g7cdc5xs7ub/feed/aaaf5jle4pb7e
Posts Media Videos Starter Packs
Pinned
distilled.skillstopractice.com
Ruby + Rails : Distilled is moving to Mastodon.

Just getting set up over there but you'll find the account here:

ruby.social/@distilled

I will set up bridging when I can, not sure if I will do crossposting though.

If you're set up with @ap.brid.gy here I can still share your posts that way.
Reposted by Ruby + Rails : Distilled
skillstopractice.mastodon.social.ap.brid.gy
I just signed the open letter to the Rails Core team, after hesitating for a long time about whether that was the right choice for me.

I know and like several Rails core members, as well as several Basecamp employees. I understand the squeeze that can happen when speaking out individually only […]
Original post on mastodon.social
mastodon.social
Reposted by Ruby + Rails : Distilled
skillstopractice.mastodon.social.ap.brid.gy
So the way I read this is a sponsor forced this action by Ruby Central.

If that sponsor was Shopify, then in effect, this confirms that a company that DHH is a board member of forced this action.

If not, who was responsible for this then?

This is a very […]

[Original post on mastodon.social]
distilled.skillstopractice.com
Sorry for the very long thread!

Just wanted to get this all out there so I can link to it if anyone else asks.
distilled.skillstopractice.com
Now if there's a learning and growing that happens... I'll be back! This is the closest I've seen to a platform that *could* work at global scale.

Mastodon is solving a different problem.

But it's a safer place for me to be until atproto has at least a couple alternative platforms on it.
distilled.skillstopractice.com
I spent the last decade as a management consultant / exec advisor for several different businesses (one of which was much bigger than Bluesky in revenue + team size) trying to design sustainable revenue models that take network effects into account.

I don't see it here, so I gotta go.
distilled.skillstopractice.com
I believe in the good intentions of the team and even in the lack of *active* ill-intent from the person I'm referring to here, and I did have a meaningful convo in private where I felt heard and was told that my notes have been passed on to the team.

But I also make my own choices on principle.
distilled.skillstopractice.com
It turned my stomach to see that team member playfully say things like "Should I delete that post for you since its an ad?" when it was a link to some small individual creator's work.

To think that's what we've got shaping strategy at one of the world's most influential platforms is very unsettling
distilled.skillstopractice.com
All of this triggered alarm bells of tech startup culture where engineers + product designers lead efforts and there's a lack of seriousness about building real, sustainable business models, and a lack of responsibility to use power and visibility appropriately and be mindful of differentials.
distilled.skillstopractice.com
I observed one of Bluesky's most visible team members poking fun at and being unkind to someone who runs a small account here for questioning their intentions, and that same person treated me very poorly as well until they realized I had a nuanced argument to make.
distilled.skillstopractice.com
notes.skillstopractice.com/updates/2025...

I had assumed that Bluesky had made a commitment to seek a self-sustaining business model that didn't involve ad revenue and I was wrong about that, even though prior conversations with the team made me believe otherwise.
Bluesky Business Model - Risk Factors | S2P :: Notes
Notes from Gregory Brown
notes.skillstopractice.com
distilled.skillstopractice.com
Ruby + Rails : Distilled is moving to Mastodon.

Just getting set up over there but you'll find the account here:

ruby.social/@distilled

I will set up bridging when I can, not sure if I will do crossposting though.

If you're set up with @ap.brid.gy here I can still share your posts that way.
Reposted by Ruby + Rails : Distilled
I'm leaving Bluesky effective immediately and this is the reason why.

I'll post when I get Mastodon set up + an RSS feed + newsletter.
why.bsky.team
Why @why.bsky.team · May 19
If you have problems with us as a company making revenue, then i've got some bad news.
Reposted by Ruby + Rails : Distilled
joshfrankel.bsky.social
ViewComponents reduce bloat, simplify data, and create reusable frontend styling. Despite these benefits, they're often under-utilized in the Rails community. I've written a blog post refactoring a real-world example into isolated ViewComponents.

joshfrankel.me/blog/viewcom...

#ruby #rubyonrails
ViewComponents, the Missing View Layer for Rails
If you’ve worked with Rails for any measure of time, then you know that Rails’ Views can quickly get out of hand. Between Helpers, instance variables, and inline logic, they quickly become bloated and...
joshfrankel.me
Reposted by Ruby + Rails : Distilled
Reposted by Ruby + Rails : Distilled
jamie.schembri.me
How do you manage error classes in your app?

- Granular — Domain::Specific::NotFoundError
- Generic/Reusable — Error::NotFound
- Not — StandardError/raise 'x'

Personally, I create my own error classes so I can see what's wrong at a glance, even if it means catching existing ones.

#RubyLang
distilled.skillstopractice.com
Already several good RSS feeds in the thread.

Keep them coming! Discoverability is hard these days and RSS was one of those lovely tools that deserves a comeback.
distilled.skillstopractice.com
If you've got a blog where you (at least sometimes) write Ruby-related posts, please reply with a link to your RSS feed below.

I am going to try to start keeping an eye on those as well and sharing interesting stuff I find from time to time.
distilled.skillstopractice.com
If you've got a blog where you (at least sometimes) write Ruby-related posts, please reply with a link to your RSS feed below.

I am going to try to start keeping an eye on those as well and sharing interesting stuff I find from time to time.
Reposted by Ruby + Rails : Distilled
jvrc.ca
What do you love about programming in #ruby?
Reposted by Ruby + Rails : Distilled
jamie.schembri.me
Don't want to expose a class' initializer in Ruby? Making it private is easy!

Just use `private_class_method :new`.

This conveys intent that your class is not designed to be initialized from outside — perfect when you want to use the factory pattern.
Screenshot of Ruby code:

class Pizza
  def self.margherita
    new(sauce: 'tomato', cheese: 'mozzarella', toppings: %w[basil])
  end

  def self.vegetariana
    new(sauce: 'tomato', cheese: 'mozzarella',
        toppings: %w[aubergine mushrooms peppers onions olives])
  end

  private_class_method :new

  def initialize(sauce:, cheese:, toppings:)
    @sauce = sauce
    @cheese = cheese
    @toppings = toppings
  end
end
Screenshot of Ruby code:

Pizza.margherita
# => #<Pizza:0x0000000121c17f10
#      @cheese="mozzarella",
#      @sauce="tomato",
#      @toppings=["basil"]>

Pizza.vegetariana
# => <Pizza:0x0000000120f34988
#      @cheese="mozzarella",
#      @sauce="tomato",
#      @toppings=["aubergine", "mushrooms", "peppers", "onions", "olives"]>

Pizza.new(sauce: 'white', cheese: 'none', toppings: %w[pineapple])
# => private method 'new' called for class Pizza (NoMethodError)
Reposted by Ruby + Rails : Distilled
hansschnedlitz.com
How to automatically trigger a file download with Turbo?

The user triggers the creation of a file. That file is created using a background job. I could update the view using Turbo Streams (e.g. render a 'Download Now' button). But I'd like download to automatically start 🤔

#rubyonrails
Reposted by Ruby + Rails : Distilled
fxn.bsky.social
Namespaces 101

During the last days I have done an immersion into namespaces, the new big feature that is coming in Ruby.

Here's a digested mental model for you all.

gist.github.com/fxn/86ad8584...
namespaces.md
GitHub Gist: instantly share code, notes, and snippets.
gist.github.com
Reposted by Ruby + Rails : Distilled
nateberkopec.bsky.social
Incredibly common Rails perf anti-pattern:

Rails.cache.fetch([complicated,cache,key], expires_in: random_interval) do
dog_of_a_SQL_query
end

Cache hitrate: 10% (if anyone even knows what it is)
Reposted by Ruby + Rails : Distilled
hansschnedlitz.com
Quick reminder that you should be using Jemalloc 👀

#rubyonrails #ruby