こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、11年目エンジニアです。
この記事では、 Ruby on Railsでデータベースに接続するRakeタスクの実装について丁寧に解説します。
Rakeタスクを新規作成するコマンドやRakeタスクの基本の実装や実行方法については、以下の記事をご参考ください。
【Ruby on Rails】Rakeタスクを新規作成するrails g taskコマンドについて解説します
Rakeタスクの基本について
【Ruby on Rails】Rakeタスクの実装について解説します
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows10 |
---|---|
Rubyのバージョン | 2.6.6 |
Ruby on Railsのバージョン | 6.0.3.5 |
SQLiteのバージョン | 3.32.3 |
この記事ではRuby on Railsのプロジェクトは
C:\rails_study\sample
に作成しています。
データベースに接続するRakeタスクの実装について解説
データベースに接続するRakeタスクの実装について解説します。
Rakeタスクは基本
1 2 3 4 5 6 |
namespace :sample_task do desc "sample" task :sample do puts "Hello World" end end |
というように実装していました。
データベースに接続したい場合は
1 2 3 4 5 6 |
namespace :sample_task do desc "sample" task sample: :environment do puts "Hello World" end end |
上記のサンプルのように、タスク名を宣言する箇所に【:environment】を挿入するだけでOKです。
データベース接続しない場合でも、【:environment】を挿入していて問題ありません。
タスク名の【:environment】は
1 |
task :sample => :environment do |
と書いても同じようにデータベースに接続することができます。
では、次の章で実際に使ってみます。
データベースに接続するサンプルRakeタスクの概要
データベースに接続するサンプルRakeタスクは、usersテーブルからデータをすべて取得し表示する、というタスクを実装します。
usersテーブルには以下のデータがあります。
Rakeタスクサンプル
1 2 3 4 5 6 7 8 9 10 11 12 |
namespace :user do desc "userテーブルから取得" task get_user: :environment do all_users = User.all all_users.each_with_index do |user, idx| puts "■#{idx}番目" puts "名前:#{user.name}" puts "年齢:#{user.age}" end end end |
each_with_indexメソッドは、要素番号を扱うことができる繰り返し処理です。
詳しくはこちらの記事をご参考ください。
実行結果
Rakeタスクを実行してテーブルのデータを読み込めているかを確認します。
1 2 3 4 5 6 7 |
C:\rails_study\sample>rails user:get_user ■0番目 名前:田中 年齢:34 ■1番目 名前:鈴木 年齢:19 |
usersテーブルのデータが読み込めていることが確認できました。
まとめ:データベースに接続するRakeタスクにはenvironmentを使おう
以上がRuby on Railsでデータベースに接続するRakeタスクの実装の解説でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント