はじめに
選択形式のフォームを用意して、都道府県を選べるようにするならdb/seeds.rb
に必要事項入力すればいいのですが、私はもっと沢山のデータを選択形式で行いたかったので、どうすればいいか調べていました。
何とかcsvファイルは作成したもののいざ、インポートする段階になった時rake
とseed
の2パターンあることを知りました。
なので、今回はインポートの方法でrakeとseedでの違い、それぞれの特徴、メリットデメリット、などをアウトプットしたいと思います
環境
- Windows, WSL
- Docker
- Ruby 3.2.3
- Rails 7.1.3
それぞれの特徴など
1. Rakeタスク
特徴
- Rakeタスクは、特定の処理を行うためのスクリプトを作成できる
-
lib/tasks
フォルダにRubyファイルを作成して、その中にタスクを書く
メリット
- 汎用性が高い:特定の処理を何度でも実行できる。
- 開発環境や本番環境に影響を与えず、必要な時だけ実行できる。
- データのインポート処理を分けることで、初期データと運用データを明確に管理できる。
デメリット
- 手動で実行する必要がある(
rails import:csv
のように)。 - 初心者には少し複雑に感じる場合がある。
2. seeds.rb
特徴
- アプリケーションの初期データを設定するためのファイル。
-
db/seeds.rb
に初期データの作成コードを書く。
メリット
- 簡単にデータベースを初期化できる:
rails db:seed
で実行できる。 - 新しいプロジェクトや環境を立ち上げる際に、簡単にデータを投入できる。
デメリット
- 本番環境でも実行されるため、意図しないデータの挿入があるかもしれない。
- 初期データが多くなると管理が難しくなることがある。
Rakeタスクの実行環境について
RakeタスクでCSVをインポートした場合、開発環境と本番環境の両方で実行できます。実行する環境によって影響が出るかもしれないから、注意が必要です。特に、本番環境ではデータの整合性を保つために、実行する内容を確認することが重要になります。
CSVを何度も修正する場合
CSVを何度も修正する可能性があるなら、Rakeタスクを使った方がおすすめのようです。理由としては次のようなことが挙げられます。
- Rakeタスクは実行するたびにデータをインポートできるから、修正後のCSVを簡単に再実行できる。
-
seeds.rb
は基本的に初期データを設定するためのものだから、何度も実行するのは向かない場合がある。
さいごに
詳しいインポートするためのコードや導入手順については割愛。
RakeとSeed2パターンあることを今回初めて知ることができてよかったです。
この記事が何か参考になれば幸いです。