Support for appraisal
Depfu now supports Ruby projects using the appraisal gem.
Appraisal makes it easy to test your library with different versions of a dependency. It is most commonly used for libraries that provide plugin-like functionality for frameworks. For example, you want to make sure your image uploading library works with several major versions of Rails.
From the normal, main gemspec and Gemfile of the library, appraisal generates multiple additional gemfiles, one for each release line of the gem you’re “appraising”.
appraise "4.2" do gem "rails", "~> 4.2.0" end appraise "5.0" do gem "rails", "~> 5.0.0" end
Which results in the following folder structure:
paperclip |-- lib |-- gemfiles | |-- 4.2.gemfile | |-- 5.0.gemfile |-- Appraisals |-- Gemfile |-- paperclip.gemspec
Depfu did work fine before on the main gemspec and Gemfile of the library, but appraisal projects usually run their CI on the generated gemfiles as a matrix build. Which means Depfu would create a PR with the dependency update, but the CI build for that PR did not include the update and so the test results would be meaningless.
We now autodetect projects using appraisal, continue to update the main gemspec and Gemfile as before and additionally apply the same gem update to all files found in the
gemfiles/ folder (with or without lockfiles).
If it’s the actual “appraised” gem that got a new release, we only apply the patch/minor version that would make sense for this release line. Otherwise Depfu would update all generated gemfiles to the latest Rails release, which defeats the purpose of using appraisal in the first place.