rakeを使う 続き

↓の続き

utouto97.hatenablog.com

試してみる

デフォルトタスク

task default:を設定することで、デフォルトで実行されるタスクを設定することができます。
デフォルトタスクは、rakeコマンドが引数なしに実行された場合に実行するタスクです。

前回、作成したsample_task1をデフォルトタスクに設定してみます。

task default: :sample_task1

引数なしでrakeコマンドを実行してみます。

$ docker-compose run ruby sh -c "cd /work && rake"
hello, rake!

sample_task1が実行されています。

ネームスペース

ネームスペース (namespace) を使って、グループにまとめることができます。
RailsだとDB関連のコマンドがdbというネームスペースでまとめられています。
(db:create, db:migrate など)

NS1というネームスペースにsample_task4を作ります。

namespace :NS1 do
  desc "sample rake task 4"
  task :sample_task4 do
    puts "hello, namespace!"
  end
end

rake -Tで確認してみます。

$ docker-compose run ruby sh -c "cd /work && rake -T"
rake NS1:sample_task4   # sample rake task 4
rake sample_task1       # sample rake task 1
rake sample_task2       # sample rake task 2
rake sample_task3[msg]  # sample rake task 3

NS1:sample_task4が追加されています。
実行してみます。

$ docker-compose run ruby sh -c "cd /work && rake NS1:sample_task4"
hello, namespace!

cleanタスク

makeではよくcleanを設定することがあると思います。

rakeではrake/cleanをつかって、cleanタスクを作ることができます。
requireで読み込みます。

require 'rake/clean'

rake -T で確認してみます。

$ docker-compose run ruby sh -c "cd /work && rake -T"
rake NS1:sample_task4   # sample rake task 4
rake clean              # Remove any temporary products
rake clobber            # Remove any generated files
rake sample_task1       # sample rake task 1
rake sample_task2       # sample rake task 2
rake sample_task3[msg]  # sample rake task 3

rake cleanrake clobberが追加されています。
基本的な使い分けは、cleanではバックアップファイルを削除、clobberでは自動生成されたファイルとcleanで削除されるファイルを削除する、ようです。

削除するファイルは、CLEANCLOBBERincludeを使って宣言します。
ここでは、CLEANで.txtファイルを消してみます。
(バックアップファイルではないけど、お試し用です)
ワイルドカードも利用できるので、ここでは*.txtを指定しています。

CLEAN.include('*.txt')

適当にファイルを作って試してみます。

$ touch text.txt
$ ls
Rakefile  docker-compose.yml  test.txt
$ docker-compose run ruby sh -c "cd /work && rake clean"
$ ls
Rakefile  docker-compose.yml

test.txtファイルが削除されました。

終わり