Scott Menor

I've been using Ruby on Rails since sometime around Rails 3

Recently I had a project that made me think maybe I should try it again so I went to the site and watched DHH's traditional 15 minute video.

Most of what's in there looked so straightforward and easy I thought「 why not 」and tried it - and MOST of what's in there legitimately was that easy.

MOST

But a casual aside that got almost no attention was the new built-in deploy system Kamal for building and rolling out Docker containers had basically no explaination.

Now I have a lot of experience deploying Rails apps with Capistrano which is far from great but I see this and think to myself「 hey it looks so easy and it's the preferred / default so why not try it ? 」

「 Why not 」indeed.

A few days later「 why not ? 」was clear af.

Every step of the way was a massively frustrating pain in the ass.

Probably wasn't a great sign that I was only able to find a few walk-throughs for setting up Rails 8 deploymenets with Kamal. I read through a few and pick the one that was the most step-by-step becuase I just wanted to get things going and didn't want to take any risks.

So I follow it and one of the steps was to create a Docker repository on DigitalOcean ( I'm trying to get off of AWS and this seemed like an opportunity for that though now that I'm starting to use containers I can at least in theory move much more easily ).

This also turns out to have been a mistake because the username for DigitalOcean is my email address but the command line tools REALLY dislike symbols like @ but don't show enough information to have made that obvious.

I wasted so much time gritting my way through issue after issue and finally ALMOST got there and this repository thing was One Last Thing™ and I finally got it going and I go to GitHub and file a bug report / issue for this sincerely hoping that these might be reasonable people who want to know that there is something massively annoying and frustrating awaiting anyone who follows their tutorial

I will admit perhaps I wasn't as diplomatic as I could have been but given my frustration I think I was pretty measured and / again I'm writing this with the hope that they'll update their how-to and make it easier for others so nobody else will have to go through the small hell trying to get started that I did.

I've been spending DAYS trying to figure out how to setup and deploy with Docker ( to a digitalocean drop but literally anyplace seems equally as difficult )

You have @dhh's 15 minute Rails 8 demo which blasts past this part and kamal like it Just Works™ and after going through multiple ( non rails ) HowTos it very much does not Just Work™

Steps to reproduce

rails new myproject [ setup Kamal / docker credentials / etc ] ... kamal setup kamal deploy

Expected behavior

There is a simple, straightforward, well documented procedure for setting up Kamal deploys ( ideally using Rails credentials rather than the separate .kamal/secrets but if you insist on using that EXPLAIN HOW ) that if followed actually lets people deploy their rails projects

Actual behavior

Just nothing works and every step is a huge pain of googling and trying to crawl through broken glass to get to the next step.

I've been at it again for DAYS and I'm still not able to get kamal setup to successfully complete

#21 exporting to image
#21 pushing layers 0.9s done
#21 ERROR: failed to push registry.digitalocean.com/actuallyMyRegistryNameHere/pdcs:2fdd71f89eb4b704907e4f01652bbee84bee0a88: failed to authorize: failed to fetch oauth token: unexpected status from GET request to https://api.digitalocean.com/v2/registry/auth?scope=repository%3AactuallyMyRegistryNameHere%2Fpdcs%3Apull%2Cpush&service=registry.digitalocean.com: 401 Unauthorized

The contrast between my experience there and @dhh's demo could not be greater

I'm sure this is stuff that you worked out and now after some time and effort have going smoothly but / again it has been an absolute nightmare for me to try to work through and I would so much rather spend my time developing than wasting it trying to get the 「 magical / way easier than capistrano 」 deploy system working

System configuration

Rails version: Rails 8.0.2

Ruby version: ruby 3.4.4 (2025-05-14 revision a38531fd3f) +PRISM [arm64-darwin25]

This turned out not to be taken well. First someone named zzak said

Kamal is documented here: https://kamal-deploy.org/docs/installation/

The Rails issue tracker is intended for reporting bugs in the framework.

Kamal page links to a discord and discussions for community support, please direct your questions there.

Again Rails ships with Kamal, DHH's demo talks about how great Kamal is and how they've fine-tuned their Docker wankery to work with Rails and blahblahblah and my goal here is to get him to add the tinniest bit of how-to to tell people how to get everything going ( now that I know how to do it it'd take a fraction of this post and because of this experience, I'll never tell. If you insist on using their crapware and they insist on not documenting it, you both deserve what you get there )

Pressing on, DHH adds

@zzak is right that we don't use the issue tracker for usage help, but I'll still offer you the pointer that the error you're wrestling with is in the error message. It looks like you're using Digital Ocean as your registry, but you've taken a sample path "registry.digitalocean.com/actuallyMyRegistryNameHere" without changing the placeholder (see "actuallyMyRegistryNameHere") and that's probably your issue. I'd recommend just using Docker Hub for starters, as that's just easier for most people.

AI is also a great help for these kinds of questions. I popped in your error message into ChatGPT and got a bunch of pointers that are very likely to help you solve the root cause of your problem.

All the best on your learning journey!

Now I have to tell you I fucking hate [ audible air-quotes ]「 AI 」and telling me to use it for help when I know what trash it is was really not the right thing to say to me in this situation.

I eventually switched to docker hub and got it working after several other steps but I have to say recommending the ecological catastrophe plagiarism machine ChatGPT / audible-air-quotes「 AI 」is really not encouraging here. ( aside but the entire reason I was using a digital ocean registry instead of a hub.docker.com registry was that I only found a few tutorials for deploying with Kamal in Rails 8 and setting it up that way was what one of them recommended doing it that way; that was one of several completely avoidable frustrating diversions / wastes of time an official howto would have easily prevented )

@zzak kamal ships with Rails, is clearly the default / preferred deployment system, and is in the 15 minute Rails 8 demo. It'd take an extra minute or two of video / a very short howto to get people spun-up on it and I guarantee if I ran into this issue others have just gritted through it and others still probably got frustrated and gave up.

I'd like to think that you two want people using your framework and not needlessly immediately starting out with a bad / frustrating experience and then directing them to a BS factory to「 solve 」their issue when they point that out to you and suggest what I'd say is a an incredibly obvious and reasonable solution that I'd imagine you could put together / record and have up and running in an afternoon.

..but what do I know ?

DHH blasts off:

You clearly don't know how to address people who give you gifts for free with the grace and gratitude such gifts warrant. I'd advice you to learn better manners before you ask people to volunteer their time to help you use software that you received for free. You didn't buy anything here. We're not your vendor and you're not our customer.

To which I reply:

Pot, kettle, man.

I've solved my problem and don't need this howto anymore.

I'm taking MY time here to convey MY experience and MY frustration in the hope that YOU can avoid putting other people through the same experience when they're trying to use YOUR framework.

Don't worry though I'll never make that mistake again with you.

and he responded:

Seems like your misunderstanding of the open source gift exchange is terminal. Bye.

and blocked me.

DHH Blocked me from the Rails GitHub repository

「 Terminal 」indeed. I'll never even think about useing Rails or anything else DHH is in any way associated with for another project again.

Postscript - when I started this journey I started two different Rails projects thinking I'd run them in two different containers on a single server and finally migrate my other stuff out of EC2 as I've been trying to for literally years ( I stopped buying anything from Amazon a long time ago but have had stuff running on AWS forever because it's incredibly sticky but recently losing my job has given me time and iimpetus to finally do it and to get off of gmail which was its own horrible journey I'll finish writing up one day ).

Anyway I got one of my projects deploying and the other one despite as far as I can tell having an identical configuration in basically every way for some reason won't work just as the icing on this horseshit cake.

Post-postscript - IDK why I didn't look earlier but just checked out the GitHub page for Kamal and of course OF COURSE it's a Basecamp project ( that being DHH's company; just LMFAO at this dude acting like asking for a little howto to use HIS deployment system with HIS platform was spitting in his hand after he graciously stepped down from Olympus and bestowd a beautiful gift upon me; asbolute 🤡💩 )