Just do IT

思うは招く

rails g コマンドが反応しない・実行されない

問題

railsマイグレーションファイルを作成しようとしたときのこと。

rails g migration ChangeTasksNameNotNull

これをしても、一向にマイグレーションファイルが作成されない。 Control + Cで終了させると、/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/spring-2.1.0/lib/spring/あたりで何やら様子がおかしいエラーが出ている。

解決

どうやら、springというgemがバックグラウンドで動いており、自分のコマンドと競合してしまい動かないとのこと。

【Ruby on Rails】rails g コマンドが反応しない時の対処法 | Darablog

これでspringを止める。

spring stop
=> Spring stopped.

するとrailsコマンドが実行できた。

Control + Cで止まらない場合

ターミナルウィンドウを一度消して、再度開く。 該当のディレクトリへ移動し、railsではなく、bin/railsコマンドを使ってみる。

bin/rails g migration ChangeTasksNameNotNull

こうすることで、railsアプリのルートディレクトリ直下の、binディレクトリにあるrailsというスクリプトを呼び出す。 bundle exec railsと同じ意味で、Gemfileどおりのgemを利用できる環境上でrailsコマンドを実行できる。

springとは

  • アプリケーションをバックグラウンドで動かしてくれる
  • コードの変更をオートリロードしてくれる