Rakeタスクとは。簡単なタスクの作り方

目次

マーケター、エンジニアを月1時間からジョインできるプラットフォーム

airteamは月1時間からマーケターやエンジニアに相談できるプラットフォーム。 雇うのはハードル高いけどプロをチームに入れたい。そんな経営者のためのサービスです。 相談にのる方も募集しています。

タスクなしだから月一時間からジョイン可能

作業はなくオンライン相談メイン。 月1時間からさっと経験者に継続的に相談できます。

多様な経験者を雇用するより何倍も早くチームに

あらゆるジャンルの経験者がいるので あなたのチームのノウハウの選択肢が広がります。

NDAはすでに締結済み、契約もスムーズ

契約の煩雑なやりとりはなく、NDAはすでに締結済み、書面のやりとりはありません。

rakeタスクとその実装方法についてまとめました。rakeタスクを作成することで定期的な実行やちょっとしたタスクの自動化ができます。

Rakeタスクとは

Rakeはrubyで書かれたビルドツールでrubyを実行することができます。RakeタスクはそのRakeで実行される処理でその処理を定義したのがRakefileという。

例えば定期的にデータのバックアップを取るだったり、通知するなどができる。

Rakeタスクの作り方

例としてhelloと返す簡単なタスクを作っていきます。

タスクファイル作成

まずは下記でタスクを作成

rails g task greet(タスクファイル名)

上記のコマンドで下記ファイルが作成されます。

lib/tasks/greet.rake

namespace :greet do
end

タスクファイルの記述

上記のファイルに処理を記述していきます。

namespace :greet do
  desc "Helloを表示"
  task hello: :environment do
    puts "Hello"
  end
end


:environment
タスクは、Rakeタスクを実行する前にRailsの環境(設定、データベース接続情報、その他のアプリケーションコードなど)をロードするための特別なタスクです。このタスクを依存関係として指定することで、Rakeタスク内でRailsの各種機能(モデル、メーラーなど)にアクセスできるようになります。

この例での task task_name: :environment do という部分で、:environment が依存タスクとして指定されています。これによって、rake greet:task_name というコマンドを実行すると、:environment タスクが先に実行され、Railsの環境がロードされた状態で task_name タスクが実行されます。

もしこの :environment を省略すると、Rakeタスクは「素の」Ruby環境で実行されることになります。その結果、Rails特有の機能(ActiveRecordなど)を利用するコードが含まれている場合、その部分でエラーが発生する可能性があります。

:environment タスクはRailsに内蔵されており、Rakefilelib/tasks/*.rake ファイルで依存関係として簡単に指定できます。これによって、Railsの全機能を利用したRakeタスクを簡単に作成できます。

コマンドによるタスクの実行

rake -T

上記でrakeタスクの一覧表示。

rake greet:hello

上記で実行