railsサーバーが起動しなくて困ったときのことをハックとともにメモ

Herokuではじめる 初心者のためのRuby on Rails3入門」という有り難い記事を見つけたので、この記事に従ってせっせと作業を進めていましたところ、railsサーバーが起動しないという困ったエラーが起きました。

もっと詳しく言うと、最初は起動するんですが、いったん停止してもう一度起動しようとすると「already running(既に起動しているよ!)」と言われて起動できないという症状でした。

同じエラーで困っている誰かのためにもしかするとなるかもしれないので、エラーの原因と解消するためのハックを紹介します。

エラーの原因

サーバーを停止してもpid(プロセスID)を保持したままであるということが今回のエラーの原因のようでした。

サーバーを起動するとtmp/pidのディレクトリ内にpidを保持したファイル(server.pid)が出来るんですが、これがサーバーを停止しても残ったままなので「まだプロセスが残っている」と解釈されてしまう模様……。もちろんそのpidのプロセスなんて既に存在しないんですが。

エラー解消法1:server.pidを削除

railsサーバーを停止する度にserver.pidを削除すれば一応動きます。

けど、面倒ですよね。

エラー解消法2:起動する度に自動でserver.pidを削除する処理を書く

script/railsの先頭(コメント行の次)に

begin
  File.delete(File.expand_path('../../tmp/pids/server.pid',  __FILE__))
rescue
  # Do nothing
end

という記述を追加すると、停止→再起動を繰り返してもちゃんと動くようになりました! やったね!

お世話になった記事

大変助かりました。ありがとうございました。

<

「名前とメールアドレスを入力」または「ツイッター等のアカウントでログイン」することでコメントを残せます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

サイト内検索

up!