Skip to content
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

Regression - broken backward compatibility with rack 2 since passenger 6.0.24 #2595

Open
zzemla opened this issue Mar 7, 2025 · 0 comments

Comments

@zzemla
Copy link

zzemla commented Mar 7, 2025

Issue report

Are you sure this is a bug in Passenger?

Yes.

Please try with the newest version of Passenger to avoid issues that have already been fixed

Present in the latest passenger gem

Question 1: What is the problem?

Expected behavior:

I'm able to use the latest passenger gem with rails apps that use rack 2.x.

Actual behavior:

This is not possible now due to gem dependency conflict.

How to reproduce it:

Start a new rails 7.2 project, and modify Gemfile by adding:

gem "passenger", "6.0.24"
gem "rack", "< 3"

With this bundle install will fail with version solving has failed error message:

$ bundle install
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Could not find compatible versions

Because passenger >= 6.0.24 depends on rackup >= 2.0.0
  and rackup >= 2.0.0 depends on rack >= 3,
  passenger >= 6.0.24 requires rack >= 3.
So, because Gemfile depends on passenger = 6.0.24
  and Gemfile depends on rack < 3,
  version solving has failed.

More details:

Related to #2559 and cc5359c

Starting from version 6.0.24 passenger gem requires rackup >= 2.0.0 to work, which depends on rack >= 3.0. This breaks the ability to use the latest passenger version with rails apps that use rack 2.x

Rack 2 is still actively maintained and used by many Rails applications and gems.

I think this may be an unintended side effect, as passenger .gemspec specifies:

s.add_dependency 'rack', '>= 1.6.13'

but due to the recently added:

s.add_dependency 'rackup', '>= 2.0.0'

passenger now actually requires rack 3.x to work.

Possible fix:

This whole issue seems to stem from the fact that rackup 1.0.0 gem release was broken as it did not contain required files, and caused problems described in #2559

Since then, it appears that rackup 1.0.1 has been released specifically to address that issue:
rack/rackup#13 (comment)

The possible fix is to either change the dependency to:

s.add_dependency 'rackup', '>= 1.0.1'

or drop that dependency requirement at all, as I believe such issues with third-party gems should not be solved at the passenger .gemspec level.

Question 2: Passenger version and integration mode:

Both open source and enterprise versions are affected.

Question 3: OS or Linux distro, platform (including version):

Ubuntu 24.04 LTS.

Question 4: Passenger installation method:

[x] RubyGems + Gemfile
[ ] RubyGems, no Gemfile
[ ] Phusion APT repo
[ ] Phusion YUM repo
[ ] OS X Homebrew
[ ] source tarball
[ ] Other, please specify:

Question 5: Your app's programming language (including any version managers) and framework (including versions):

Ruby 3.2.3, Rails 7.2

Question 6: Are you using a PaaS and/or containerization? If so which one?

No.

Question 7: Anything else about your setup that we should know?

No.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant