現在スクールで学んでいます。
Ruby on Rails学習中に新たにアプリ作成しようとした際に、つまづいたことを備忘録としてこちらで共有します。追記や修正等ありましたら、ご指摘いただけるとありがたいです。
環境
・MacBookAir 13インチ M1(2020)
・OS:Sonoma 14.3
・メモリ:16GB
・Rails: version 6.1.7.6
概要
Ruby on RailではControllerやModelを新規で作成する際に、コマンドから簡単に作成することが出来ます。その際にrails g または、rails generateというコマンドをターミナル上で実行します。
状況
$ rails g model post title:string content:text
Running via Spring preloader in process 82269
invoke active_record
create db/migrate/20240208095330_create_posts.rb
create app/models/post.rb
invoke test_unit
create test/models/post_test.rb
create test/fixtures/posts.yml
create db/migrate/20240208095330_create_posts.rb
create app/models/post.rb
とターミナル上では出ているのに、実際にVScodeを開いてみると、ファイルが見当たらない・・・
dbディレクトリにもmigrateファイル見当たらず。
(すみません、VScodeは写真撮り忘れました)
やったこと
・ 再度ターミナルのログの確認、DBが作成されているか確認しました。
→ $ rails db:create
も $ rails db:migrate
も完了している。
・ $ bundle install
もしているか確認しました。
・ $ yarn add @babel/plugin-proposal-private-methods
も完了。
・Railsのバージョンやgemも確認。
・スクールのメンターに質問する。
原因
gems/ のファイルのパッケージ「spring」 が実行し続けているのが原因。
つまり他のアプリ制作で立ち上げたRailsサーバーをexit
していなかったのが原因。
対処法
$ spring status
Spring is running:
まだ 「spring」 が実行し続けていました。
$ spring stop
Spring stopped.
この状態で再度、下記を実行。
$ rails g model post title:string content:text
Running via Spring preloader in process 82269
invoke active_record
create db/migrate/20240208095330_create_posts.rb
create app/models/post.rb
invoke test_unit
create test/models/post_test.rb
create test/fixtures/posts.yml
出てきた内容は同じでしたが、ファイルは作成できていました。
最後に
おそらく $rails s
で他のサーバーも立ち上げたままにして、アプリ制作に移ったため、なかなかターミナルの内容が反映されない状況だったと思います。都度サーバーはexit
する大切さを実感しました。参考文献、そしてメンターさんありがとうございました。
参考文献