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

Add lower bound to Listen gem requirement #48622

Merged
merged 1 commit into from Jul 2, 2023

Conversation

skipkayhil
Copy link
Member

Motivation / Background

Ref #48620

An issue was recently opened with the following error message:

.../activesupport-7.0.6/lib/active_support/evented_file_update_checker.rb:120:in `start': undefined method `wait_for_state' for #<Listen::Listener ...>

The issue is that the user was using Listen 3.0.8, however the wait_for_state method was added in Listen 3.3.0

Detail

We can make the error message a little better by defining a lower bound on Listen 3.3.0 (like we do for other optional dependencies):

.../bundler/rubygems_integration.rb:280:in `block (2 levels) in replace_gem': can't activate listen (~> 3.3), already activated listen-3.0.8. Make sure all dependencies are added to Gemfile. (Gem::LoadError)

There is definitely still room for improvement here, but this should be much more helpful in figuring out that the issue is a bad Listen version and not a bug in Rails.

Additional Information

If this is backport worthy, we would need to backport #47002 as well

Checklist

Before submitting the PR make sure the following are checked:

  • This Pull Request is related to one change. Changes that are unrelated should be opened in separate PRs.
  • Commit message has a detailed description of what changed and why. If this PR fixes a related issue include it in the commit message. Ex: [Fix #issue-number]
  • Tests are added or updated if you fix a bug or add a feature.
  • CHANGELOG files are updated for the changed libraries if there is a behavior change or additional feature. Minor bug fixes and documentation changes should not be included.

An issue was recently opened with the following error message:

```
.../activesupport-7.0.6/lib/active_support/evented_file_update_checker.rb:120:in `start': undefined method `wait_for_state' for #<Listen::Listener ...>
```

The issue is that the user was using Listen 3.0.8, however the
`wait_for_state` method was [added][1] in Listen 3.3.0

We can make the error message a little better by defining a lower bound
on Listen 3.3.0 (like we do for other optional dependencies):

```
.../bundler/rubygems_integration.rb:280:in `block (2 levels) in replace_gem': can't activate listen (~> 3.3), already activated listen-3.0.8. Make sure all dependencies are added to Gemfile. (Gem::LoadError)
```

There is definitely still room for improvement here, but this should
be much more helpful in figuring out that the issue is a bad Listen
version and not a bug in Rails.

[1]: guard/listen@12b4fc5
@guilleiguaran guilleiguaran merged commit f46d345 into rails:main Jul 2, 2023
9 checks passed
@skipkayhil skipkayhil deleted the hm-listen-lower-bound branch July 2, 2023 13:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants