LoginSignup
39
33

More than 5 years have passed since last update.

Rakefileにunicorn起動・停止のコマンドを追加する

Last updated at Posted at 2014-06-16

いい加減$ bundle exec unicorn_rails...をやるのが面倒なので、Rakefileにunicorn起動・停止のタスクを追加した。

Rakefile
require File.expand_path('../config/application', __FILE__)

Rails.application.load_tasks

namespace :unicorn do

  ##
  # Tasks
  ## 
  desc "Start unicorn"
  task(:start) {
    config = rails_root + "config/unicorn.rb"
    sh "bundle exec unicorn_rails -c #{config} -E development -D"
  }

  desc "Stop unicorn"
  task(:stop) { unicorn_signal :QUIT }

  desc "Restart unicorn with USR2"
  task(:restart) { unicorn_signal :USR2 }

  desc "Increment number of worker processes"
  task(:increment) { unicorn_signal :TTIN }

  desc "Decrement number of worker processes"
  task(:decrement) { unicorn_signal :TTOU }

  desc "Unicorn pstree (depends on pstree command)"
  task(:pstree) do
    sh "pstree '#{unicorn_pid}'"
  end

  ##
  # Helpers
  ##
  def unicorn_signal signal
    Process.kill signal, unicorn_pid
  end

  def unicorn_pid
    begin
      File.read("/tmp/unicorn.pid").to_i
    rescue Errno::ENOENT
      raise "Unicorn doesn't seem to be running"
    end
  end

  def rails_root
    require "pathname"
    Pathname.new(__FILE__) + "../"
  end 
end

これで、$ rake unicorn:startで、unicornの起動。
$ rake unicorn:stopでunicornの停止が出来る。

unicorn.pidをrails/tmp/pidsにおいている人は、/tmp/unicorn.pidのpathを変更したらいけるはず。

参考

Rake tasks for Unicorn: start stop restart increment decrement pstree

39
33
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
39
33