「Rake tasks」入門

「Rake tasks」入門

こんにちは、本日はrakeタスクの簡単な紹介をします( rake tasks )。

Rakeタスクは、Rubyアプリケーション内で再利用可能かつ自動化されたタスクを定義するための手段です。

これらは、データベースのマイグレーション、レポート作成、データ同期など、さまざまなタスクを実行するために使用できます。

Ruby on Railsのようなフレームワークを少なくとも一度でも使ったことがあれば、すでに「rakeタスク」に出会っている可能性が高いです。

rakeタスクの使い方

Rubyプロジェクトでrakeタスクを使用するには、まずアプリケーションのGemfilegem '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

知識の定着

さらに学びたい場合は、以下のリソースを参照することをお勧めします:

この記事が、今後のRubyプロジェクトでRakeタスクを使って何ができるかのヒントになれば幸いです!

タグ

  • ルビー

  • API

この記事は

コメント

読み込み中...

「Rake tasks」入門 | DEMILY Clément