LoadError: ne pouvait pas charger Le Gemme "listen" (Rails 5)
j'ai une application API mode Rails 5 qui ne me permet pas de lancer rake routes
ou rails s
. L'erreur que j'obtiens est:
$ 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)
j'ai vérifié que listen
est dans le groupe de développement dans mon 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
et que c'est dans ma Gemfile.serrure:
$ 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)
j'ai mis à jour le paquet, et l'ai installé, et vérifié que gem install listen
fonctionne. C'était plus tôt cette semaine, mais je ne suis pas avoir la chance de revenir par le biais de ma s'engage.
$ ruby -v
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]
Je ne le vois pas dans vendor/cache
mais je ne sais pas quoi en penser...
$ bundle package | grep 'listen'
J'apprécie votre aide!
mise à jour:
je peux" corriger "le problème en mettant gem 'listen', '~> 3.1.5'
dans le Global Gemfile (et en le retirant de :development
). Puis toutes les erreurs disparaissent et tout fonctionne, mais cela semble mauvais.
8 réponses
si vous êtes sur rails 5 et que vous utilisez par défaut config/environments/development.rb fichier il aura cette ligne de code.
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
cela nécessite l'écoute gem. Cela m'a un peu secoué pendant que je faisais une amélioration de rails 4 à des rails 5
modifier: Oublié si vous mentionnez si vous commentez cette ligne de code dehors il ne sera plus besoin de la gemme d'écoute
vous auriez pu par erreur mettre bundle install --without
à un moment donné, je l'ai fait de toute façon.
pour revenir à cette exécution:
bundle config --delete without
j'ai aussi lancé bundle config --delete with
comme j'ai mis manuellement l'option with
aussi par erreur. L'exécution des deux devrait vous ramener au comportement par défaut.
après avoir supprimé la configuration without
, j'ai pu exécuter avec succès un bundle install
encore et après mon rails s
, rails db:migrate
etc. travaillé.
vous pouvez confirmer si c'est votre problème en lançant bundle install
et regarder la dernière ligne de la sortie. S'il est écrit:
Gems in the groups development and test were not installed.
il est certain que la solution ci-dessus devrait fonctionner pour vous.
je poste ceci comme réponse, mais je n'aime pas ça.
je peux" corriger "le problème en mettant gem 'listen', '~> 3.1.5'
dans le Global Gemfile (et en le retirant de :development
). Puis toutes les erreurs disparaissent et tout fonctionne, mais cela semble faux.
j'ai le même problème en lançant rails c
.
en lisant cet autre débordement de pile post j'ai réalisé qu'il est normal que les deux commandes bundle exec rake
ou rails console
tournent dans un environnement par défaut production
.
j'ai pensé que je vais résoudre le problème, soit en:
- , ajoutant que
export RAILS_ENV=production
dans ~/.bash_profile - écrit explicitement l'environnement dans lequel je veux que la commande s'exécute comme
bundle exec rake a_rake:task RAILS_ENV=production
rails console --env=production
etc...
j'ai eu le même problème. Grâce à la réponse de @newdark j'ai trouvé la bonne solution. En gros, je voulais déployer des rails en mode production
. Mais il est évident que vous avez oublié de définir la variable d'environnement RAILS_ENV=production
avant d'exécuter server.
pour récapituler, les dépendances pour le mode production
ont été installées tandis que les rails ont essayé de démarrer en mode development
à cause de l'oubli de régler RAILS_ENV=production
. Si j'ajoutais gem listen
aux dépendances production
,je dirais être en mode développement sans pouvoir le remarquer.
pour moi la solution était de faire export RAILS_ENV=production
avant d'exécuter n'importe quelle commande de rails et garder les dépendances intactes. Espère que j'ai réussi à expliquer.
j'ai eu le même problème aujourd'hui après la mise à niveau des Rails 5.1.5 à 5.2.0. Lors de la première exécution du serveur, il y a eu le problème suivant de 'ressources manquantes':
ActionView::Template::Error (The asset "asterisk_orange.png" is not present in the asset pipeline.)
en Essayant de précompiler les actifs montre le "gem écouter erreur":
$ bundle exec rake assets:precompile
rake aborted!
LoadError: Could not load the 'listen' gem. Add `gem 'listen'` to the development group of your Gemfile
ma solution a été de définir explicitement l'environnement de production:
$ RAILS_ENV=production bundle exec rake assets:precompile
cela précompile les actifs sans problèmes et le problème des "actifs manquants" a été résolu.
j'ai utilisé ceci: bundle install --without development
erreur:
ne pouvait pas charger le gemme "listen". Ajouter
gem 'listen'
au groupe de développement de votre Gemfile (LoadError)
après cela, utilisez ce code:
bundle config --delete without
bundle config --delete with
enfin
bundle install
j'ai eu le même problème, je le Répare en lançant
rails c -e production