【Ruby/Unicorn】WSLでUnicornを再起動すると起動しない

2019年5月23日Ruby,Windows

こんにちは、しきゆらです。

タイトルが長くてよくわからないかもしれません。
問題と解決方法を、メモしておきます。

問題

WSL上にrbenvを用いてRuby2.6.3をインストールして簡単なWebアプリを作成しようとしていました。
適当なディレクトリにbundlerを使ってSinatraとUnicornをインストールし、起動テストを行いました。
最初は問題なくUnicornが起動したので、一度停止させておきました。
再びUnicornを立ち上げると、うまく立ち上がりません。

Unicornはデフォルトではターミナルにエラー等を表示しないので、エラーログをファイルに吐き出すようにしてありました。
エラーログの中には、このようなエラーが記録されていました。
code:error
F, [2019-05-22T22:52:13.998205 #22482] FATAL — : error adding listener addr=/path/to/sinatra_app/tmp/sockets/unicorn.sock
ArgumentError: socket=/path/to/sinatra_app/tmp/sockets/unicorn.sock specified but it is not a socket!

どうやら、ソケットファイルが問題のようです。

解決方法

根本的な解決方法ではありませんが、tmp/sockets/unicorn.sockファイルを削除すると問題なく起動するようになりました。

しかし、再度Unicornを停止した後Unicornを再起動すると再び上記のエラーが表示されます。
Unicorn停止とsockファイルの削除は同時に行うと、無駄な時間がかからないかともいます。

解決方法があればコメントやTwitter等から教えてほしいです。
というか、そもそもsockファイルと普通のファイルの違いなどもきちんと理解できているわけではないので、この辺も含めて調べる必要がありそうです。

今回は、場当たり的な対処法までをまとめておきました。

 

おわり

Posted by しきゆら