概要
開発環境ごとにデータベースが作られているため、デプロイ後、ローカル環境で作成していた初期データを本番環境にて作成する必要がありました。
そのときに「fly.io上でコンソールを使ってデータを作成する方法」を実施したので、その方法を記載します。
今回は、以下の2つのパターン挙げます。
①Rakeタスクの実行(csvファイル読み込みのため)
②seedファイルの読み込み
※ 事前にfly.ioへのデプロイを完了し、データのもととなるcsvファイル及びseedファイル、読み込みのためのRakeタスクについては作成済みとします。
環境
Rails 7.08
Ruby 3.1.4
Fly.io
Docker利用なし
fly.ioでコンソールの立ち上げ (共通)
$ flyctl console
(事前にflyctlのインストールを実施しておく。https://fly.io/docs/hands-on/)
①Rakeタスクの実行(csvファイル読み込みのため)
fly.ioで起動したコンソール上でRakeタスクを実行します。
irb(main):001:0> Rails.application.load_tasks
=> #<アプリケーション名::Application>
irb(main):002:0> Rake::Task['namescope名:タスク名'].execute
path: /rails/db/csv/ファイル名.csv
start to create xxxx data
completed!!
②seedファイルの読み込み
fly.ioで起動したコンソール上で、seedファイルをloadで読み込みます。
irb(main):003:0> load 'db/seed.rb'
(略)
=> true
終わりに
デプロイ先が異なっても基本的な考え方は変わらないため、今回の方法は、応用が可能かと思いました。
なお、記載内容に不十分な点などがございましたら、ご指摘いただけますと幸いです。
参考記事
RailsでのCSVデータ投入
RailsでRakeタスクをconsoleから呼び出す方法
参考サイト
-
データベースが開発環境ごとに別れている話について
https://pikawaka.com/curriculums/web-service-development/rails-database-setting#環境単位の設定 -
Ruby3.3リファレンスマニュアル instance method Rake::Task#execute
https://docs.ruby-lang.org/ja/latest/method/Rake=3a=3aTask/i/execute.html