> RoR has breaking API changes often enough ... magically break that often
According to the support policy, nothing magic about those breaking changes: "Breaking changes are paired with deprecation notices in the previous minor or major release."
I remember that we had one particularly horrible maintenance update when Arel queries that used to work just fine suddenly started always loading one wrong item. Turns out, they did an internal change so that our way of doing User.where(User.arel_table[:id].eq(2)) now returned nil for the arel eq so that we were calling User.where(nil) which got translated into User.where(id: nil.id)
That said, I was referring more to the Ruby on Rails ecosystem in general. Our production deployment has 80 gems, which I'd say is a normal number for a big Rails webapp, and sadly many of them do not follow semantic versioning, so that minor gem version updates might contain unexpected breaking changes for us.
The advantage that old languages like PHP or C++ have here is that their standard libraries have been around for so long that the API rarely changes these days.
https://guides.rubyonrails.org/maintenance_policy.html
> RoR has breaking API changes often enough ... magically break that often
According to the support policy, nothing magic about those breaking changes: "Breaking changes are paired with deprecation notices in the previous minor or major release."