Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LoadError: Could not load the 'listen' gem (Rails 5)

I've got an API mode Rails 5 app that won't let me run rake routes or rails s. The error I get is:

$ rake routes rake aborted! LoadError: Could not load the 'listen' gem. Add `gem 'listen'` to the development group of your Gemfile .../config/environment.rb:5:in `<top (required)>' LoadError: cannot load such file -- listen .../config/environment.rb:5:in `<top (required)>' Tasks: TOP => routes => environment (See full trace by running task with --trace) 

I've verified that listen is in the development group in my Gemfile:

group :development do   gem 'listen', '~> 3.1.5'   # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring   gem 'spring'   gem 'spring-watcher-listen', '~> 2.0.0' end 

And that it's in my Gemfile.lock:

$ cat Gemfile.lock | grep 'listen'     listen (3.1.5)     spring-watcher-listen (2.0.0)       listen (>= 2.7, < 4.0)   listen (~> 3.1.5)   spring-watcher-listen (~> 2.0.0) 

I've bundle updated, and bundle installed, and verified that gem install listen works. This was working earlier this week, but I'm not having luck going back through my commits.

$ ruby -v ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14] 

I don't see it in vendor/cache but I'm not sure what to make of that...

$ bundle package | grep 'listen' 

Appreciate the help!

Update:

I can "fix" the problem by putting gem 'listen', '~> 3.1.5' in the global Gemfile (and removing it from :development). Then all the errors go away and everything works, but that seems wrong.

like image 749
lostphilosopher Avatar asked Jul 29 '16 16:07

lostphilosopher


1 Answers

If you are on rails 5 and you are using the default config/environments/development.rb file it will have this line of code in there.

config.file_watcher = ActiveSupport::EventedFileUpdateChecker 

This requires the gem listen. This threw me for a bit as I was doing a rails 4 upgrades to a rails 5

edit: Forgot to mention that if you comment that line of code out it will not need the listen gem anymore.

like image 185
newdark-it Avatar answered Oct 19 '22 21:10

newdark-it