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
タスクは、Rakeタスクを実行する前にRailsの環境(設定、データベース接続情報、その他のアプリケーションコードなど)をロードするための特別なタスクです。このタスクを依存関係として指定することで、Rakeタスク内でRailsの各種機能(モデル、メーラーなど)にアクセスできるようになります。
:environment
この例での task task_name: :environment do
という部分で、:environment
が依存タスクとして指定されています。これによって、rake greet:task_name
というコマンドを実行すると、:environment
タスクが先に実行され、Railsの環境がロードされた状態で task_name
タスクが実行されます。
もしこの :environment
を省略すると、Rakeタスクは「素の」Ruby環境で実行されることになります。その結果、Rails特有の機能(ActiveRecordなど)を利用するコードが含まれている場合、その部分でエラーが発生する可能性があります。
:environment
タスクはRailsに内蔵されており、Rakefile
や lib/tasks/*.rake
ファイルで依存関係として簡単に指定できます。これによって、Railsの全機能を利用したRakeタスクを簡単に作成できます。
コマンドによるタスクの実行
rake -T
上記でrakeタスクの一覧表示。
rake greet:hello
上記で実行