【Rails】rakeタスクとは? 概要から使い方までを解説!

Ruby on Rails

はじめに

この記事の概要

こんにちは、Rubyをメインで書いている株式会社TOKOSのツキヤです!
今回は、初学者の方だとあまり聞き馴染みの無いrakeタスクについて説明します!
最後まで読んだら、
・モデルを作成
・特定のレコードを削除
・メールの一斉送信
などなどを、ターミナル上の1コマンドで実行できる方法が分かります😎

対象読者

  • rakeタスクについての概要を知りたい人
  • 1コマンドで特定の処理を行いたい人

筆者の環境

技術等バージョン
使用パソコンMacBook Pro
ruby2.7.4
Rails6.1.4

rakeタスクとは?

簡単に説明すると、自分で設定したタスクをコマンドラインで実行できるものです。
では、タスクとは??🙄

タスクとは、自分が行いたい動作(モデルのCRUDなど)の一連のまとまりです!
このrakeタスクを使いこなすことで、ブラウザの画面以外から簡単に処理を行うことができたり、定期実行までもできるようになります💪

rakeタスクの作成

では早速、超簡単なrakeタスクを作りながら説明していきます!

今回は、Userモデルに新しくユーザー(カラムはnameのみ)を登録する処理を作ってみます。

ファイルの作成

$ rails g task SampleTask

まずは上記コマンドを打つことで、./lib/task/配下にsample_task.rbファイルが作成されます!

MEMO
今回はSampleTaskとしましたが、コマンドライン上で$ rails g task の後に自由に名前をつけることができます!
その際に各単語の最初の文字を大文字(パスカルケース)にして、コマンドを実行しましょう!

処理の記述

次に、sample_task.rbファイルを記述していきます!

namespace :sample_task do
  desc "taro君を生成する"
  task taro_create: :environment do
    User.create(name: 'taro')
  end
end

・2行目
descの後に、自由にこのタスクの説明文を記述します!
今回は、nameがtaroという文字のUserを作成するので、“taro君を生成する”としました。

・3行目
ここで、タスクの実行時の名前をつけます。
そして、:environmentと記述することで実際のRailsの環境(モデルへのアクセスなど)で実行することができます!

・4行目
ここで実際に行いたい処理を記述しています!
今回は1行と簡単ですが、if文やfor文を使って処理をゴリゴリかいちゃって大丈夫です💪

以上で実行のための準備は完了です、簡単ですね🥳

rakeタスクの実行

それではいよいよ作成したタスクを実行します。
まずは、タスクがちゃんと作成されているか確認してみます!

$ rake -vT

上記コマンドを打つと、デフォルトも含めたタスクの一覧がいっぱいターミナルに表示されます。
出力結果の中にsample_taskがあれば、問題無く作成されていることになります💪

MEMO
出力結果が多くて確認するのが面倒な方は、$ rake -vT | grep sampleのように、|(パイプ)でgrepコマンドをつなぐと、出力結果を絞り込んでくれるのでオススメです😎

それではrakeタスクを、下記コマンドで実行しましょう

$ rake sample_task:taro_create

エラーが出力されていなかったら、成功しているはずです!
$ rails cやDBにアクセスして、taroというユーザーが作成されているか確認してみてください。

以上がrakeタスクの作成 ~ 実行までの一連の流れとなります、お疲れ様でした🥳

終わりに

今回は、rakeタスクの簡単な概要と作成・実行方法について説明しました!
今回の説明を参考にして、自分なりのrakeタスクをバンバン作っちゃってください😎
要望がありそうでしたら、このrakeタスクを定期実行する方法についての記事を書こうと思いますので乞うご期待!!

また、更に使い勝手が良いrunnerについても後々記事にしようと思います!
Railsの勉強をしたい方はこの本が参考になるかと思いますので興味がある方は是非読んで見て下さい🙇‍♂️