5
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?

More than 3 years have passed since last update.

【Rails5】CarrierWaveで「rails g uploader Image」ができないときの解決方法

Last updated at Posted at 2020-05-06

##「rails g uploader Image」でエラー発生

開発環境
ruby > 2.6.5
rails > 5.2.4.2
devise > 4.7.1
carrierwave > 2.1.0

gem 'devise'のプロフ画像アップロードのために
gem 'carrierwave'を設定中、
アップローダーを作成するコマンドrails g uploader Imageでエラーが出ました。

ターミナル
$ rails g uploader Image
Running via Spring preloader in process 65446
Could not find generator 'uploader'. Maybe you meant 'mailer', 'task' or 'helper'
Run `rails generate --help` for more options.

直訳するとこうなりますね

プロセス65446のSpringプリローダーを介して実行
ジェネレータ「アップローダー」が見つかりませんでした。多分あなたは「メーラー」、「タスク」または「ヘルパー」を意味しました
その他のオプションについては、'rails generate --help'を実行してください。

uploaderが使えないということは、CarrierWave自体に問題があるのか、インストールが上手く行っていないのか…

##ググって原因を調査

数記事ヒットしましたが、すべて未解決でした。
Rails 5, Carrierwave. Could not find generator 'uploader'
carrierwave をインストール後、rails g uploader Pictureで「Could not find generator 'uploader'」
rails g uploader~ エラー 対処法

最新のCarrierWaveは不安定という話もあったので、バージョンを下げた。
→ダメ
諸々を再起動してから再インストールしてみたりインストール方法を変えてみたり。
→ダメ
「そもそもCarrierWaveよりActive Storageのほうが良い」という言葉に惑わされる
→そういう問題じゃない

万策尽きました…

##エラーの問題は「Carrierwave」ではなかった!

一呼吸置き、再度エラーに目を向けると

ターミナル
Running via Spring preloader in process 65446
#以下略

こんなエラー出てたっけ?(出てました)
この文字列で調べたら一瞬で解決しました。

##「Spring Stop」で解決

spring経由で実行していたことが原因だったようです。
$ spring stopのコマンドでspringを経由せずにコマンドを実行したら行けました。

参考
Running via Spring preloader in process. Could not find generator 'devise'の原因と解決策

ターミナル
$ spring stop
Spring stopped.

あとは、例のコマンドを実行すれば完了です。

ターミナル
$ rails g uploader Image

###そもそも「Spring」とは?

参考
GitHub (rails/spring)

ざっくり直訳すると

アプリケーションのプリローダーです。
アプリケーションをバックグラウンドで実行し続けることで開発をスピードアップし、テスト、rakeタスク、または移行を実行するたびにアプリケーションを起動する必要がなくなります。

つまり、コマンドをスムーズに動かすために裏で動いているプリローダーということのようです。

便利な機能だけど、たまに悪さをするから、そのときはspring stopと解釈しました!

##まとめ
エラーが出たらググれば良いというわけではないなと痛感しました。
エラー文をよく読んで、なにが問題と言っているのかを把握してググる必要がありますね。

そしてspring stopの理解はかなり大きな産物でした!

5
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
5
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?