Skip to content

Commit

Permalink
Add lower bound to Listen gem requirement
Browse files Browse the repository at this point in the history
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
  • Loading branch information
skipkayhil committed Jul 2, 2023
1 parent 5ed37b3 commit f311725
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 1 deletion.
5 changes: 5 additions & 0 deletions activesupport/CHANGELOG.md
@@ -1,3 +1,8 @@
* Improve error message when EventedFileUpdateChecker is used without a
compatible version of the Listen gem

*Hartley McGuire*

* Add `:report` behavior for Deprecation

Setting `config.active_support.deprecation = :report` uses the error
Expand Down
@@ -1,6 +1,6 @@
# frozen_string_literal: true

gem "listen"
gem "listen", "~> 3.5"
require "listen"

require "set"
Expand Down

0 comments on commit f311725

Please sign in to comment.