I just helped one our more experienced Ruby devs fix an issue in Circle CI by updating a random gem in the Gemfile. He has 10 years of experience in Ruby, but he needed me because I migrated the repo to Circle 2. The issue was that a Ruby gem created a shared object that linked to
libmysqlclient.so.18. This now appears to be
libmysqlclient.so in the latest ruby container. So the cached MySQL shared object failed.
The solution was to either change the cache key or bump a random gem to force the checksum to change and install the gem which builds against the new SO. I feel like this requires a bit too much understanding about how CircleCI 2.0 actually works. The cache is not really valid if the underlying OS and libs can change underneath it. You may have reasons for not having the “Rebuild without caches” button, and I may agree with your decision if I understood them. But we’ve been a customer of yours since you were beta and that particular developer has never asked me for help on Circle before.