-
Notifications
You must be signed in to change notification settings - Fork 56
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Ruby 3.2 / Rails 7 to the CI matrix #176
Add Ruby 3.2 / Rails 7 to the CI matrix #176
Conversation
Hey @petergoldstein, thanks for the PR. I had a few thoughts:
I admit that there haven't been any recent changes to Appraisal, but it does work just fine, and I've been relying on it to run tests in various scenarios and thus to generate the gemfiles that represent those scenarios. So I'd rather not write these gemfiles by hand but rather rely upon the configuration in
Hmm, I'm not sure this is a good idea. Since the gemfiles generated by Appraisals are used in CI, if we remove the lockfiles, there is a chance that CI will use a separate lockfile than a developer would use locally. Therefore if CI fails and you wish to reproduce the failure locally, you may not be able to do this. Using lockfiles removes the indeterminism and makes builds reproducible.
When I first made this gem I initially wanted to run the tests on JRuby, but they took a very long time to run (tracked in #40), but I guess I didn't remove |
@mcmire No problem. My focus was as a user - to determine whether super_diff could be safely used with Ruby 3.2 and Rails 7. Given that CI didn't have anything more recent than Ruby 3.0 and Rails 6, I needed to get it green before I would incorporate super_diff in my project. Let me make clear that you're the maintainer here and thus these kinds of decisions are yours to make. That said, my thoughts:
I've been seeing widespread failures with That said, if you want me to update the Appraisals file to reflect these changes, I can do that.
For a stand-alone application I agree with this logic. For a gem that is intended to be used in a large variety of applications, this simply isn't true. The purpose of CI isn't to ensure that the experience of a developer working on a gem is consistent and correct, it's to ensure that the experience of an end-user consumer of that gem is consistent and correct. And since the experience of an end user is going to be dependent on an ever evolving ecosystem of gems, you want to make sure that your library is working with that ecosystem pretty much at all times. Failure to rebuild lockfiles puts you in a situation where your dependencies in a "real-life" situation may resolve in a surprising fashion. I found just that sort of situation when the lt rspec 3.1.0 gemfiles rebuilt - they pulled in an archaic version of But if you want to get the rebuilt and fully updated versions of these files as of 2023-01-26 and check them in, that should be straightforward. And shouldn't make any different to getting CI to green with modern Rubies/Rails
Sure. |
One other item that may require attention - the Rails 6.0 gemfiles are actually loading Rails 6.1, because the Gemfile specification allows that. It's probably desirable to have a different set of Rails 6.1 gemfiles if that testing is required, because Rails 6 and 6.1 are pretty different. See from this image: |
@mcmire Any feedback here? appraisal is actually getting some activity now, and as noted above I'm happy to fill out the Appraisals file. Do you have a set of steps you'd like me to take to get this to mergeable? Also, it's probably desirable to get this merged - #177 - as well, so users of the gem get the proper signal about the CI status. |
@petergoldstein Sorry for the delay. I'm glad to hear that Appraisal will be getting some love! I also agree with you about removing the lockfiles out of the repo. I think I might have had some issues with dependencies in the past that led me to include them, but your argument makes sense. In any case yes please fill out the Appraisals file if you would :) |
It looks like someone else encountered this — there's #134. I realize I'm a bit behind on these PRs. I'll take a look at that now. |
@mcmire This branch is rebased, and has the following additional changes:
|
@petergoldstein Thank you so much! This will help a lot. |
This PR adds Ruby 3.2 and Rails 7 to the CI matrix. As part of these changes we also:
~> 3.9.0
as opposed to< 3.10.0
so that therspec-rails
requirement doesn't pull in a very old rspecbundler-cache
functionality built intoruby/setup-ruby
pry-byebug
/pry-nav
for Ruby versions < 3.2I didn't update the
Appraisals
file, becauseappraisal
is basically unsupported at this point, and nothing in the code base depends onappraisal
other than Gemfile generation.I'm also not sure why there are JAVA_OPTS in the GitHub Actions configuration given that specs aren't running jruby. So these may be able to be removed.
This runs green on my fork.