LoginSignup
6
3

More than 3 years have passed since last update.

$ rails g controller で作られたはずのコントローラが見つからない

Last updated at Posted at 2019-07-01

3行で

  • なぜかゴミ箱の中の同名アプリの中に作られていた
  • 一度削除したアプリと同じ名前のアプリだとエラーになるっぽい
  • ゴミ箱を空にして $ spring stop を実行してから作ることができた

( ´∀`)<詳しく書きますね

コントローラを作ったけど

railsでコントローラを作成するためには、ターミナルで下のコマンドを入力しますね

$ rails g controller コントローラ名

すると、たしかに

  create  app/controllers/コントローラ名.rb

という結果が返ってくるんですが、ディレクトリを見ても作られたはずのコントローラが見つかりません。

同じ状況の人がいないか検索した

こちらの記事を見つけました。

rails generateコマンドでモデルを生成したはずなのにファイルがない
https://teratail.com/questions/8672

「まさか」と疑いつつ、自分のゴミ箱を見ると、現在作成中のアプリケーションと同名の、過去に消したアプリケーション(なんらかの事情で作り直すつもりで消しました)の app/controllers/ ディレクトリから、上記で作成したコントローラが出てきました(理由はわかっていませんが、知ってる方がいたら教えていただきたいです)。

試み 1

かといってゴミ箱のアプリのディレクトリからそのコントローラのみを持ってくるのはよくないと思いました。なぜなら $ rails g controller コントローラ名 によって作られるのはコントローラだけではないからです。あなたもぼくと同じく、Railsの中身についてよくわかっていないのならば、なおさらやめたほうがいいでしょう。
まず、ゴミ箱を空にしてから、再度ターミナルでコマンドを実行することにしました。

$ rails g controller コントローラ名

すると、ターミナルが固まってしまい、強制終了コマンドなども受け付けない状態になってしまいました。
あまりやりたくはないのですが、仕方がないのでターミナルのウインドウの✗ボタンを押して終了させました。

試み 2

『rails g controller フリーズ』で検索し、参考になりそうなものを探しました。その中からひとつだけピックします。

rails generateがハングアップする
https://qiita.com/mom0tomo/items/b3f6c34f48c5dcaef78b

いくつかの記事にも「 ctrl + c で強制終了すると下記のエラー文が現れた」とありましたが、ぼくの場合は ctrl + c が効かなかったので、エラー文が現れることはありませんでした。

もう一点共通しているのは、どうも spring というものが影響している、ということでした。これを止めてみることにします。
ターミナルで下記のコマンドを入力します。

$ spring stop

その後、あらためて

$ rails g controller コントローラ名

を入力すると、無事、現在作業中のアプリケーションの app/controllers/ にコントローラが作成されました。
ちなみに

$ spring status

と入力すると

Spring is running:

となっているため、ストップを解除してあげるといった作業は必要無さそうです。

まとめ

やみくもに試みて直した感じもあるので、正攻法とは言えないのかもしれません(記事どおりの再現でも無かったですし)。
spring がなんなのかも正直よくわかっていませんが、ぼくと同じく作り直しグセのある初学者の方にワラのようでも助けになれば幸いです。

( ´∀`)<読んでくれてありがとう

6
3
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
6
3