I’ve been using MacOS as my desktop and development environment for the past 19 years. Whenever I got a new laptop, I’d use the migration assistant to copy my user settings over. So, I’ve got a lot of cruft in my home directory. Over that time I mostly did Java programming. But, there’s also been a bit of Perl, and I dabbled in Python for a hot second. More recently, it’s been Flutter, and most recently of all, Swift. And last OS update switched me from bash to zsh, so there’s just a huge .zshrc in my home directory. Oh yeah, and I came to OS X from FreeBSD by way of Linux, so before Homebrew won, I mostly used ports to install stuff.
So today: fastlane. It’s cool, it promises to automate some vital yet tedious tasks, most especially taking screenshots for the app store. That’s great, but it’s ruby. Ruby ships with Mac OS, but that’s kind of down-rev and the latest packages don’t like it. I have never done ruby programming, but I’ve installed tools (which ones? when? who can remember?) that required it and so there were weird traces of a ruby version manager, and maybe some kind of gem manager, so that fastlane couldn’t admit that it was completely installed or runnable or that maybe snapshots were even a thing, or that, hey, is ruby even installed on this computer?
After I kid you not, 14 solid hours of trying things that worked but broke other stuff, I’ve finally got fastlane to admit that it works.
- Some tool needed to be removed entirely. rvm? rbenv? Dunno, but I had to invoke it with
implodewhich made me feel a little better.
- Everyone in the world thinks that ruby version 3.0.0 is the thing to use. Except fastlane, which wants to use rexml, which is no longer bundled with ruby 3.0.0. There was something else broken with version 3, but I can’t remember what it was — it was way harder to solve than just installing rexml. Anyway, stick to version 2.7.2. Oh yeah, bundle couldn’t resolve ruby version dependencies.
- Homebrew says that rbenv, which delegates to ruby-build, installs openssl 1.1 but doesn’t ever patch it and it does so per ruby environment. So, if you want a patched openssl and you only want one instead of however many ruby versions you’ve got, you should provide a compiler flag to tell ruby-build about the Homebrew version. Don’t do this, because ruby won’t compile.