10
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rakeの使い方を学ぼう!〜gitの自動化編〜

Last updated at Posted at 2020-12-03

目次

このページではrakeコマンドについて以下の順を追って説明する.

rakeの基本

rakeコマンドというものがある.これはカレントディレクトリにあるRakefileの中身を実行するコマンド.

たとえば以下のようにRakefileに書いておく.

Rakefile
task default: :hello #何も指定しなければここが動作する

desc "hello" #description 説明の部分
task :hello do #rakeの後にhelloと指定するとここが動作する
  puts "Hello Rake!!"
end

rakeだけ入力し実行するとdefaultで設定されているhelloの部分が実行される.

今はhelloだけだが,タスクを増やした場合その一覧を表示するには rake -T とする.

目次へ

タスクを階層化する

rakeで実行するタスクの種類を増やす場合は namespace を以下のように使用する.

Rakefile
task default: 'basic:hello'

namespace :basic do
  desc "hello"
  task :hello do
    puts "Hello Rake!!"
  end
end

namespace :one do
  desc "one"
  task :foo do
    puts "test1"
  end
  namespace :two do
    desc "one two"
    task :hoge do
      puts "test2"
    end
  end
end
$ rake -T
rake basic:hello   # hello
rake one:foo       # one
rake one:two:hoge  # one two

目次へ

gitを自動化

gitを共有する際,

$ git pull origin main
$ git add -A
$ git commit -m "hoge"
$ git push origin main

を実行するがいちいち打つのがめんどくさい.

そこで,rakeコマンドでこれらを実行できるようにする.

そのために system という関数を使用する.これはsystemコマンドを起動することができる関数である.

Rakefile
desc 'git pull push'
task :push do
  p comm = "git pull origin main"
  system comm
  p comm = "git add -A"
  system comm
  p comm = "git commit -m #{ARGV[1]}"
  system comm
  p comm = "git push origin main"
  system comm
  exit
end
$ rake push

とコマンドに入力することでgitの一連の動作を自動で行うことができるようになった.

目次へ

まとめ

今回はrakeコマンドでgitの一連の動作を自動化した.

参考

以下を参考にした.


  • source ~/prog/github/grad_members_20f/members/miyanagi/post/rakefile.org
10
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?