問題
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とは
- アプリケーションをバックグラウンドで動かしてくれる
- コードの変更をオートリロードしてくれる