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

頭の中は異空間

生活を日々ハックしてよりよくするブログ

Railsアプリ作成のために便利なコマンドを自作しよう

どうも。

 

複数のサービスを運用するようになったらunicornのstart, stopを毎回コマンド1つずつ打つのも面倒でしょうから、予めコマンドを登録しておいて一発ですべて起動/停止出来るようにしたほうが楽じゃね?ということで、実際に作りました。

 

下記を参考にしました。

自作のコマンドを作成した - Qiita

 

 

新コマンド一覧

UnicornをStart

# command for starting unciorn
#!/bin/sh

function startService () {
  cd $1
  bundle exec unicorn_rails -c config/unicorn.rb -D -E development
}

function startAllServices () {
  rails_root="Rails rootのパス"
  dir=( "${rails_root}/サービス名1" "${rails_root}/サービス名2" "${rails_root}/サービス名3" ... )
  for i in "${dir[@]}"
  do
    startService "${i}"
  done
}



if [ $# -eq 1 ]; then
  echo "サービス"$1"を起動"
  rails_root="Rails rootのパス"
  startService "${rails_root}/$1"
else
  echo "すべてのサービスを起動"
  startAllServices
fi
ps -ef | grep unicorn | grep -v grep

 

UnicornをStop

# command for stopping unciorn
#!/bin/sh

function stopService () {
  cd $1
  kill -9 `cat "tmp/development_unicorn.pid"`
}

function stopAllServices () {
  rails_root="Rails rootのパス"
  dir=( "${rails_root}/サービス名1" "${rails_root}/サービス名2" "${rails_root}/サービス名3" ... )
  for i in "${dir[@]}"
  do
    stopService "${i}"
  done
}

if [ $# -eq 1 ]; then
  echo "サービス"$1"を停止"
  rails_root="Rails rootのパス"
  stopService "${rails_root}/$1"
else
  echo "すべてのサービスを停止"
  stopAllServices
fi
ps -ef | grep unicorn | grep -v grep

 

サービス一覧を表示

# command for listing up services
#!/bin/sh

rails_root="Rails rootのパス"
ls -l ${rails_root} | grep -v @ | awk '{print $9}' | grep -v 'README.md'

途中grep -vしているのは、余計なシンボリックリンクを含ませたくないためです。

 

ディレクトリ一覧を表示

 

PC起動してからcd ~~とするのに便利。

# command for listing up service directories
#!/bin/sh

rails_root="Rails rootのパス"
ls -l ${rails_root} | grep -v @ | awk '{print $9}' | grep -v 'README.md' | xargs -Iargs echo ${rails_root}/args

 

配置例

俺の場合は/usr/local/bin/直下に配置しています。

 

実行方法

すべてのサービスをstartする

start_unicorn

特定のサービスをstartする

start_unicorn サービス名1

 

すべてのサービスをstopする

stop_unicorn

特定のサービスをstopする

stop_unicorn サービス名1

 

サービス一覧を表示

list_unicorn_service

 

サービスのディレクトリ一覧を表示

list_service_dir

 

といった感じ。これでいちいちkillしてbundle exec ~~ってただ面倒なコマンドを繰り返す必要がなくなりました。簡単なのでお試しあれ。