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
がなんなのかも正直よくわかっていませんが、ぼくと同じく作り直しグセのある初学者の方にワラのようでも助けになれば幸いです。
( ´∀`)<読んでくれてありがとう