web-dev-qa-db-ja.com

LoadError: 'listen' gemをロードできませんでした(Rails 5)

APIモードがありますRails 5アプリでrake routesまたはRails sを実行できません。表示されるエラーは次のとおりです。

$ 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)

listenが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

そして、それが私の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)

バンドルを更新し、バンドルをインストールし、gem install listenが機能することを確認しました。これは今週初めに機能していましたが、コミットを元に戻すことができません。

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

vendor/cacheには表示されませんが、どうすればよいかわかりません...

$ bundle package | grep 'listen'

ヘルプに感謝します!

更新:

グローバルなGemfileにgem 'listen', '~> 3.1.5'を配置(および:developmentから削除)することで、問題を「修正」できます。その後、すべてのエラーがなくなり、すべてが機能しますが、それは間違っているようです。

42
lostphilosopher

これを回答として投稿していますが、好きではありません。

グローバルなGemfileにgem 'listen', '~> 3.1.5'を配置(および:developmentから削除)することで、問題を「修正」できます。その後、すべてのエラーがなくなり、すべてが機能しますが、それは間違っているようです。

16
lostphilosopher

Rails 5であり、デフォルトのconfig/environments/development.rbファイルを使用している場合、このコード行がそこにあります。

config.file_watcher = ActiveSupport::EventedFileUpdateChecker

これには、gem listenが必要です。 Rails 4へのアップグレードをRails 5

編集:そのコード行をコメントアウトする場合、listen gemはもう必要ないことを言及するのを忘れました。

60
brand-it

間違ってbundle install --withoutを設定した可能性がありますが、とにかく設定しました。

この実行を元に戻すには:

bundle config --delete without

誤ってwithオプションも手動で設定したため、bundle config --delete withも実行しました。両方を実行すると、デフォルトの動作に戻るはずです。

without configを削除した後、bundle installを再び正常に実行でき、その後Rails sRails db:migrateなどが機能しました。


これが問題かどうかを確認するには、bundle installを実行して、出力の最後から2行目を見てください。状態の場合:

Gems in the groups development and test were not installed.

上記のソリューションが確実に機能するはずです。

41
mtrolle

私はこれを使用しました:bundle install --without development

エラー:

「listen」gemをロードできませんでした。追加 gem 'listen' Gemfileの開発グループ(LoadError)

この後、そのコードを使用します。

bundle config --delete without
bundle config --delete with

最後に

bundle install
8
mix-fGt

今日Rails 5.1.5から5.2.0にアップグレードした後、同様の問題が発生しました。サーバーを初めて実行すると、次の「資産が見つかりません」という問題がありました。

ActionView::Template::Error (The asset "asterisk_orange.png" is not present in the asset pipeline.)

アセットをプリコンパイルしようとすると、「gem listenエラー」が表示されます。

$ bundle exec rake assets:precompile
rake aborted!
LoadError: Could not load the 'listen' gem. Add `gem 'listen'` to the development group of your Gemfile

私の解決策は、本番環境を明示的に設定することでした:

$ Rails_ENV=production bundle exec rake assets:precompile

これにより、問題のない資産がプリコンパイルされ、「資産の欠落」問題が修正されました。

7
Heiko Lübbe

Rails cを実行しても同じ問題が発生します。

この他のStack Overflow post を読むことで、bundle exec rakeコマンドまたはRails consoleの両方がデフォルトのproduction環境で実行されているのが正常であることがわかりました。

私は次のいずれかで問題を解決すると考えました:

  1. 〜/ .bash_profileにexport Rails_ENV=productionを追加
  2. bundle exec rake a_rake:task Rails_ENV=productionRails console --env=productionなどのようにコマンドを実行する環境を明示的に記述します...
6
Francesco Meli

同じ問題がありました。 @newdark answerのおかげで、正しい解決策を見つけました。基本的に、Rails in productionモードでデプロイしたかったのですが、サーバーを実行する前に環境変数Rails_ENV=productionを設定するのを忘れていました。

要約すると、productionモードの依存関係がインストールされましたが、Rails= Rails_ENV=productionの設定を忘れたためにdevelopmentモードで起動しようとしました。 gem listenproduction依存関係に追加するには、気付かずに開発モードで実行します。

私にとっての解決策は、任意のRailsコマンドを実行する前にexport Rails_ENV=productionを実行し、依存関係をそのままにしておくことでした。

4
akostadinov

私は同じ問題を抱えていたので、実行して修正しました

Rails c -e production
2
Touseef Murtaza

mongoid database fileを生成しようとしたときに同じエラーが発生しました。

Rails new projectRuby 2.5.1を作成しました。 Ruby2.2です。したがって、私の状況では因果関係が異なる可能性があります。

Rails new projectを使用したとき、バージョン5.2で作成された後、gemを5.1.2に変更すると問題が発生します。 GemfileでRails _5.1.6_ newを使用して作成すると、開発用の追加パックが生成されます。

  group :development do
      # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
      gem 'web-console', '>= 3.3.0'
      gem 'listen', '>= 3.0.5', '< 3.2'
      # 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

このようにして、「listen」は自動的にgemfileに表示されました

0
sonic