rakeを使う
Rakefile
rubyのmakeがrakeです。
そして、ruby版のMakefileがRakefileとなります。
このRakefileには、Rubyを使ってタスクを記述し、rakeコマンドから実行することが可能です。
試してみる
実行環境
まずはrakeを動かす環境を準備します。
Dockerを使って、サクッと準備します。
docker-compose.yml
を作り、以下のようにします。
version: "3" services: ruby: image: ruby volumes: - .:/work
シンプルなタスク
準備はできました。
では、タスクを作ってみます。
はじめに、最もシンプルなタスクを作ってみます。
hello, rake! と表示するだけのタスクになります。
Rakefileを作成し、以下のように編集します。
desc "sample rake task 1" task :sample_task1 do puts "hello, rake!" end
rake -T
コマンドでタスク一覧を確認してみます。
$ docker-compose run ruby sh -c "cd /work && rake -T" rake sample_task1 # sample rake task 1
sample_task1が追加されています。
実行してみます。
$ docker-compose run ruby sh -c "cd /work && rake sample_task1" hello, rake!
hello, rake!と表示されました。
依存のあるタスク
次に、依存のあるタスクを作ってみます。
sample_task2はsample_task1を実行してから実行されます。
以下を書き加えます。
desc "sample rake task 2" task :sample_task2 => [:sample_task1] do puts "hello, rake 2!" end
rake -T
で確認してみます。
$ docker-compose run ruby sh -c "cd /work && rake -T" rake sample_task1 # sample rake task 1 rake sample_task2 # sample rake task 2
追加されています。
実行してみます。
$ docker-compose run ruby sh -c "cd /work && rake sample_task2" hello, rake! hello, rake 2!
sample_task1が実行され、sample_task2が実行されています。
引数をとるタスク
次に、引数をとるタスクを作ってみます。
helloに続いて引数で受け取ったmsgを表示するタスクを追加します。
desc "sample rake task 3" task :sample_task3, ["msg"] do |task, args| puts "hello, " + args.msg end
rake -T
で確認してみます。
$ docker-compose run ruby sh -c "cd /work && rake -T" rake sample_task1 # sample rake task 1 rake sample_task2 # sample rake task 2 rake sample_task3[msg] # sample rake task 3
追加されています。
実行してみます。
引数はタスク名の後ろに[]
で囲って渡します。
$ docker-compose run ruby sh -c "cd /work && rake sample_task3[RAKE]" hello, RAKE
引数として渡した RAKE が表示されています。
終わり