rakeとは
rakeとはRubyにおいて色々やってくれるツールのことです。その中でもsinatraやRails上でデータベースに対して何か操作を行いたいときに行うコマンドがrake db: hogehoge
です。
本記事ではわかるようでわからないrake dbコマンドをみんな大好きchatGPTくんが家の建築に例えてくれたのでわかりやすい(?)例え話を聞きながら理解していきます。
完全に蛇足ですが例え話をchatGPTにイラストまで生成させたので楽しんでいってください。
rake db:create
プロジェクトフォルダ内のdatabase.ymlファイルに基づいてデータベースを作成します。
開発の途中で作っていくテーブルを保存する場所です。新しくプロジェクトを作成したらまずこのコマンドを実行してデータベースを作ります。
身近なものに例えると、、、
まず、家を建てるためには土地が必要です。rake db:create は、その「土地を購入する」ことに相当します。これは、データベースを作成して、家を建てるための場所(データベース)が準備されるプロセスです。
rake db:create_migration NAME=hogehoge
db/migrateフォルダ内にマイグレーションファイルが作成されます。
マグレーションファイルとはテーブルの設計図のようなものでマイグレーションファイルに書かれた情報を元にテーブルを作成、修正します。マイグレーションファイルをどのように記述するかは後述します。(追記する)
身近なものに例えると、、、
次に、どんな家を建てるのか、設計図を描きます。rake db:create_migration NAME=hogehoge は、この「設計図を描く」ステップです。この設計図には、どのような部屋が必要で、どこに配置するのかが記載されています。マイグレーションファイルが設計図に相当し、家の構造(データベースの構造)がここで決まります。
rake db:migrate
作成されたmigrationファイルを実行し、データベースを更新するコマンドです。
身近なものに例えると、、、
設計図ができたら、実際に工事を始めます。rake db:migrate は、この「家を建てる」プロセスです。設計図に基づいて、家の骨組みを立て、壁を作り、屋根を乗せるように、データベースの構造が現実のものになります。
その他
rake db:migration:status
作成されたマイグレーションファイルのどれがデータベースに適用されていて、どれが適用されていないかを確認するためのコマンドです。
身近なものに例えると、、、
工事が進む中で、進捗を確認するのも大切です。rake db:migration:status は、この「工事進捗を確認する」作業です。どの部分が完成していて、どの部分がまだ未完成かをチェックリストで確認するように、どのマイグレーションが適用済みか、どれが未適用かを確認します。
rake db:seed
データベースに初期値をいれるためのコマンドです。
このコマンドを打つことでdb/seeds.rb内に書いてある情報がデータベースに適用されます。
身近なものに例えると、、、
家が完成したら、次は家具やインテリアを配置して住む準備をします。rake db:seed は、この「家具やインテリアを配置する」作業です。データベースに初期データを投入することで、アプリケーションがすぐに使用できる状態に整えます。
rake db:reset
データベースをリセットするためのコマンドです。
具体的には一度データベースを削除し、全てのマイグレーションファイルを作成します。
つまり、次のコマンドを順番に打っているのと同じです。
rake db:drop
rake db:create
rake db:migrate
身近なものに例えると、、、
時には、家の状態をリセットして最初からやり直したいことがあります。rake db:reset は、この「家をリノベーションして最初からやり直す」プロセスです。一度家を壊して新たに建て直し、再び全ての部屋や家具を設置し直します。データベースをリセットして、再度マイグレーションを適用し、初期データを投入するのと同じです。
rake db:drop
現在使用しているデータベースを削除するためのコマンドです。このコマンドによってデータベースが完全に削除されます。
身近なものに例えると、、、
最後に、家や土地が不要になった場合は、完全に手放すこともあります。rake db:drop は、この「家と土地を完全に手放す」ことに相当します。これを実行すると、データベースが完全に削除され、すべてのデータが失われます。