"rails g devise:install" 実行時、"Could not find generator" というエラーになる時

しょうもないミスですが、軽くハマったので書きます。


やろうとしたこと

Railsで作成するアプリケーションに、認証機能を追加しようと、

簡単に、多彩なログイン機能をつけることができる"devise"というgemを導入しようとしてました。

deviseについての詳細はリファレンスマニュアルをご参照

https://github.com/plataformatec/devise


事象

導入手順に従い、Gemfileにgem 'device'と記載し、bundle install後、

以下コマンドを実行したところ、 「Could not find generator」 と表示され、正しくインストールされない。

$ rails g devise:install

Running via Spring preloader in process 24017
Could not find generator 'devise:install'. Maybe you meant 'css:assets', 'assets' or 'generator'
Run `rails generate --help` for more options.


原因

Gemfileの記載ミス

正しくはGemfileに「gem 'devise' 」と記載する必要があり。


どうしてこうなった(推測)

「devise」と「device」どちらも正しい英語として存在します。

devise・・・工夫する、考案する、案出する、発明する、遺贈する

https://ejje.weblio.jp/content/devise

device・・・装置、考案物、からくり、爆破装置、爆弾、工夫、方策、趣向、修辞的技巧、比喩表現

https://ejje.weblio.jp/content/device

「デバイス」という単語を聞いてイメージするのはdevice(装置)なので、間違って書いてしまうのではないでしょうか。

私も「認証機能を提供する装置」みたいなイベージを勝手に持っておりました。(言い訳)

ですが、正しくは「devise」であることから、「認証機能を開発(考案)する」といった意味が込められているのかもしれないですね(知っている方いれば教えてもらえると嬉しいです)

以下、deviseのドキュメントから引用


Devise is a flexible authentication solution for Rails based on Warden. It:

https://www.rubydoc.info/github/plataformatec/devise/



あとがき

「Could not find generator 'devise:install'」でググると以下の記事(複数バージョンのspringを使用しているとできことがある)という記事があり、確かにspringのプロセスがたくさん上がっていた(平行で複数のRailsアプリを触っていた)ので「spring stop」 をしてみるも解決せず、色々調べたところそんなレベルの話ではなかった。

Deiviceにてrails g device:installを実行後エラー

https://teratail.com/questions/51554

また、Qiitaで「Rails device」で検索すると結構出てくるので皆間違えるんだなぁと思い書きました。

スクリーンショット 2018-11-23 14.51.19.png

※片っ端から編集リクエスト投げようと思いましたが、キリがないのでスクショの方々のみリクエストさせていただきましたm(_ _)m