1. ホーム
  2. ruby-on-rails

[解決済み] rails db:migrate vs rake db:migrate

2023-04-26 04:34:48

質問

railsの初心者です。rails 5でデータマイグレーションを生成する際、一部の人が rails db:migrate の上に rake db:migrate . データベースマイグレーションにおけるrailsとrakeコマンドの違いを誰か説明してください。rakeコマンドはrails 5で廃止されたということでしょうか?

どうもありがとうございます。

どのように解決するのですか?

Railsのコアチームは、rakeが行うすべてのことをrailsコマンドがサポートするようにすることで、一貫性を持たせることを決定しました。

例えばRails 5のコマンドは db:migrate , db:setup , db:test などは、Rails 4ではrakeコマンドの一部としてサポートされていましたが、railsコマンドでサポートされるようになりました。しかし、Rails 4のときと同じようにrakeを使ってこれらのコマンドを実行することは可能です。これは、Railsコミュニティが、コマンドオプションをrakeからrailsに完全に移行する代わりに、Rake Proxyを導入したためです。

内部で起こっていることは rails db:migrate コマンドが実行されると、Railsは db:migrate がrailsがネイティブにサポートしているものであるかどうかをチェックします。この場合 db:migrate はrailsがネイティブでサポートしていないため、RailsはRake Proxyを介してRakeに実行を委ねます。

Rails 5でrailsがサポートしているすべてのコマンドを確認したい場合は、以下のコマンドを実行することで長いオプションのリストを得ることができます。 rails --help.