2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

deviseとsorceryについて深ぼってみる

Posted at

はじめに

deviseとsorceryという認証機能に関わるものについて前回あたりで調べたことをまとめてみましたが。今回はもう少し深ぼってまとめてみたいと思います。

一般的とされるdeviseだが…

1. deviseはRailsエンジンを用いており、動作を定義してしまう。つまり、ライブラリとしての独立性に乏しいのでsorceryがいいこともある

Railsエンジンとは、Railsアプリケーションの一部として動作するモジュール(再利用可能なコードの塊)です。Railsエンジンを使用することで、機能や部分を独立して作成し、Railsアプリケーションに組み込むことができます。deviseはこのRailsエンジンを利用しており、認証機能の動作を多くの既存のRails機能に組み込んでいます。

このため、deviseはRailsの内部で多くの機能や動作を定義しており、これがライブラリとしての独立性を低くしています。

つまり、deviseを使うと、認証機能がRailsの他の部分と強く結びつき、カスタマイズや他のライブラリとの互換性が難しくなることがあります。

2.deviseはコントローラーのオーバーライドやソースコードを読んで一部メソッドをオーバーライドするなど依存が激しいのでsorcerygsいいことがある。

  • コントローラーのオーバーライドとは、deviseが提供するデフォルトのコントローラーやアクションをカスタマイズするために、自分自身でコントローラーを作成してdeviseのコントローラーの動作を変更することです。
  • 一部メソッドをオーバーライドするとは、deviseが提供する既存のメソッド(例えば、ログイン処理など)をカスタマイズするために、同じ名前のメソッドを自分で定義し直すことです。
  • オーバーライドとは、既存のクラスやモジュールの機能を上書きして、自分の目的に合わせてカスタマイズすることを指します。

つまり、deviseの内部実装に依存するため、カスタマイズが難しくなり、deviseのバージョンアップや他のライブラリとの互換性に問題が生じる可能性があります。

3. sorceryも1モデルでしか使えない?!

1モデルとは、sorceryが基本的に1つのモデル(例えば、Userモデル)に対してのみ認証機能を提供することを意味します。つまり、sorceryを使って複数のモデルに対して認証機能を設定するのが難しいという制約があります。例えば、UserAdminのような複数のモデルに対して認証機能を設定したい場合、sorceryでは少し手間がかかります。

このような理由から、sorceryはシンプルで使いやすいですが、複雑な認証要件には不向きかもしれません。

さいごに

deviseとsorceryどちらを利用するか非常に悩ましい。シンプルなミニアプリとかならsorceryでいいのかもしれません。他におすすめの認証機能等があれば教えていただきたいです。
自作という手もあるのか…。

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?