読者です 読者をやめる 読者になる 読者になる

Rails Webook

自社のECを開発している会社で働いています。Rails情報やサービスを成長させる方法を書いていきます

RailsでRakeタスクの作成

Rails入門 Rails初級 開発を効率化する

RailsでRakeタスクを作成する手順を説明します。
開発中に何度も実行するコマンドや操作をRakeタスクにしておくことで開発をスムーズに進められるようになります。

Railsには、既に有用なRakeタスクがデフォルトで定義されていますので、Rakeコマンド一覧を参照して、既に存在していないか、一部として使えそうなタスクはないかと見ることも大切です。



今回は、次のユーザーモデルのテストデータを作成するタスクを作成します。

User nickname email password

1. Rakeタスクをファイルを作成

rails g task [タスク名]でRakeタスクのファイルを作成します。
Rakeタスクは拡張子.rakeである必要があります。

rails g task sample
      create  lib/tasks/sample.rake

2. Rakeタスクの実装

lib/tasks配下にファイルが作成されるので、タスクで実行したい処理を実装します。

# lib/tasks/sample.rake

namespace :sample do           # ネームスペースを定義 "rake sample: ..."となる
  desc "サンプルデータを作成する"    # rake -T のタスク一覧の結果で表示されるタスクの説明文
  task populate: :environment do # タスク名を定義 "rake db:populate"で呼べる
    # 100ユーザ作成する
    100.times do |n|
      nickname = "nickname#{n}"
      email    = "user#{n}@example.co.jp"
      password = "password"
      User.create!(nickname: nickname, email: email, password: password)
    end
  end
end

では、Rakeタスクを実行します。(migrationが実行済みであること)

rake sample:populate

3. Rakeタスクに引数を渡す

次のように環境引数で渡すのが一般的です。

rake sample:populate LIMIT=10

ここでは、LIMITを指定することで作成するUser数を設定できるようにします。

# lib/tasks/sample.rake

namespace :sample do
  desc "サンプルデータを作成する" 
  task populate: :environment do
    # 環境変数の値を取得。指定がないときはデフォルト値100で設定
    limit = ENV['LIMIT'] || 100

    # limitの数だけUserを作成する
    limit.times do |n|
      nickname = "nickname#{n}"
      email    = "user#{n}@example.co.jp"
      password = "password"
      User.create!(nickname: nickname, email: email, password: password)
    end
  endend


以上です。