5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rspec】Devise::MissingWardenエラーの解決策

Last updated at Posted at 2020-05-09

##状況
Rspecのコントローラースペックを実装中に表題のエラーが発生しました。
初めて見るエラー文で戸惑ったのですが、解決策がシンプルだったため記載します。

##環境
railsを用いたアプリ開発中で、deviseを用いたユーザー登録機能を実装している。

スクリーンショット 2020-05-09 14.07.03.png

##解決策

結論から。
エラー文には


 Make sure that your application is loading Devise 
and Warden as expected and that the `Warden::Manager` 
middleware is present in your middleware stack.
       If you are seeing this on one of your tests, 
ensure that your tests are either executing 
the Rails middleware stack or that your tests are using the `Devise::Test::ControllerHelpers` module to inject the `request.env['warden']` object for you.

(アプリケーションがDeviseをロードしていることを確認してください 
とWardenは期待通りであり、 `Warden :: Manager` ミドルウェアはミドルウェアスタックに存在します。        あなたのテストのいずれかでこれを見ている場合、 テストが実行されていることを確認します 
Railsミドルウェアスタック、またはテストで `Devise :: Test :: ControllerHelpers`
モジュールを使用して` request.env ['warden'] `オブジェクトを挿入すること。)

と記載されています。

  に下記を記載します。

rails_helper.rb


 config.include Devise::Test::ControllerHelpers, type: :controller
  
 config.include Devise::Test::ControllerHelpers, type: :view

(私は一番下の行に記載しました。)

再度rails sでサーバーを立ち上げrspecを行うと、
エラーが出ていた箇所のテストが通っていました。

##原因

ユーザー登録で使用したgem "devise"はwarden をベースにした
gemということで、ベースであるwardenのプロキシサーバーのエラーが起こり、エラー文が出ていた様子です。

プロキシサーバーとは、通常のサーバーではない代理のサーバーのような意味合いで、
今回は指定したプロキシサーバーが見つからない、ということでのエラーなのではないかと解釈しました。

##参考にさせていただいた記事

【Rails4】Devise::MissingWarden エラーへの対処
[wardencommunity/warden]
(https://github.com/wardencommunity/warden/wiki)

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?