ましめも

技術系メモ

UnicornでUnix domain socketを使う場合は絶対パスで指定しなければならない

listen 8080 # TCP
listen "tmp/unicorn.sock" # Unix Domain Socketのつもり

と指定するとそんなListenの方法ないよー、と怒られた

I, [2013-06-26T09:22:21.178723 #11457]  INFO -- : listening on addr=0.0.0.0:8080 fd=8
F, [2013-06-26T09:22:21.179525 #11457] FATAL -- : error adding listener addr=tmp/unicorn.sock
/u/apps/..../gems/unicorn-4.6.2/lib/unicorn/socket_helper.rb:149:in `bind_listen': Don't know how to bind: tmp/unicorn.sock (ArgumentError)

Unicornソースコード
https://github.com/schneems/unicorn/blob/master/lib/unicorn/socket_helper.rb

    def bind_listen(address = '0.0.0.0:8080', opt = {})
      return address unless String === address

      sock = if address[0] == ?/
        if File.exist?(address)
          if File.socket?(address)
            begin
              UNIXSocket.new(address).close

1文字目がスラッシュからはじまってるかどうかで判定してるんですね...そうですか...

つまり、絶対パスじゃないと無理