「Rake tasks」入門

Sommaire
こんにちは、本日はrakeタスクの簡単な紹介をします( rake tasks )。
Rakeタスクは、Rubyアプリケーション内で再利用可能かつ自動化されたタスクを定義するための手段です。
これらは、データベースのマイグレーション、レポート作成、データ同期など、さまざまなタスクを実行するために使用できます。
Ruby on Railsのようなフレームワークを少なくとも一度でも使ったことがあれば、すでに「rakeタスク」に出会っている可能性が高いです。
rakeタスクの使い方
Rubyプロジェクトでrakeタスクを使用するには、まずアプリケーションのGemfileに gem 'rake' を追加し、bundle install を実行してRakeをインストールする必要があります。
Rakeがインストールされると、アプリケーションの lib/tasks ディレクトリに .rake ファイルを作成してタスクを作成できます。このファイル内で、Rakeの task メソッドを使用して次のようにタスクを定義できます:
namespace :my_tasks do
desc "Description of my task"
task :task_name => :environment do
# code to execute the task goes here
end
end
少し説明すると:task メソッドは第一引数にタスク名(ここでは :task_name)、第二引数に依存関係のリスト(ここでは :environment)を取ります。desc メソッドでタスクの説明を定義できます。
新しく作成したタスクを実行するには、ターミナルで rake task_name コマンドを使用します。
.rake ファイルで定義したタスクを一覧表示したい場合は、rake -T コマンドを使用すると、利用可能なすべてのタスクとその説明が表示されます。
アプリケーションのRakeタスクをカスタマイズしたり拡張したりするための他の多くのオプションやメソッドも存在します。これらは次のセクションで詳しく説明します。
引数を使用してさらに進む
rakeタスクに引数を渡せるようにすることで、実行時の柔軟性を高めることができます。以下はその例です:
namespace :my_tasks do
desc "Print a message"
task :print_message, [:message] => :environment do |t, args|
puts args[:message]
end
end
このタスクを実行して引数を渡すには、次のコマンドを使用します:
rake print_message[hello]
このタスクは、ターミナルに "hello" というメッセージを表示します。
複数の引数を受け取る別のRakeタスクの例は次の通りです:
namespace :my_tasks do
desc "Print a message multiple times"
task :print_message_multiple, [:message, :count] => :environment do |t, args|
args[:count].to_i.times do
puts args[:message]
end
end
end
このタスクを実行して2つの引数を渡すには、次のコマンドを使用します:
rake print_message_multiple[hello,5]
このタスクは、ターミナルに "hello" を5回表示します。
Ruby on Railsはどうなの?
前述のように、Ruby on Railsは開発を支援する便利なユーティリティコマンドの一覧を提供するためにrakeを使用しています。コントローラやモデルの生成から、アプリケーション内で利用可能なルートの一覧表示などの情報を取得するコマンドまで様々です。
あなた自身も、Railsアプリケーションの機能を拡張するために独自のタスクを作成できます。
例を示します:
namespace :db do
desc "Fill the database with sample data"
task :populate => :environment do
# Create some sample data here
User.create(name: "John", email: "john@example.com")
User.create(name: "Jane", email: "jane@example.com")
# ...
end
end
このタスクは、アプリケーションのデータベースの users テーブルにサンプルデータのレコードを作成します。
このタスクは、テストデータでデータベースを埋める場合や、アプリケーションのデモ用データセットを作成する場合に便利です。
このタスクを実行するには:
rake db:populate
Railsアプリケーションで役立つ別のRakeタスクの例:
namespace :emails do
desc "Send a reminder email to all users who have not logged in for 30 days"
task :send_reminders => :environment do
users = User.where("last_login < ?", 30.days.ago)
users.each do |user|
UserMailer.login_reminder(user).deliver_now
end
end
end
このタスクは、30日間ログインしていないすべてのユーザーにリマインダーメールを送信します。
このタスクを実行するには:
rake emails:send_reminders
知識の定着
さらに学びたい場合は、以下のリソースを参照することをお勧めします:
- Rakeの公式ドキュメント : Rakeの公式ドキュメント
- Ruby on RailsアプリケーションでのRakeタスクの使用に関する詳細ガイド : Rakeタスク(カスタム)に関するガイド
この記事が、今後のRubyプロジェクトでRakeタスクを使って何ができるかのヒントになれば幸いです!
コメント
読み込み中...