Capistrano デプロイでエラー

スポンサーリンク

運用中の Rails アプリケーションにおいて、Capistrano デプロイでエラーに遭遇しました。production 環境へのデプロイ中にエラーが発生すると、めちゃくちゃ焦りますね…。

デプロイ先のディレクトリ・ファイル構造は以下の通りです。(見やすく省略してます)

— 環境 —
rails 4.1
capistrano 3

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

Capistrano でのデプロイで以下のエラーが発生

Capistrano でいつも通りデプロイを行っていたら、突然エラーが起こりまして中断。その後、ssh でサーバーにログインして調査したところ、releases/2014******/tmp/cache というフォルダが、デプロイする度に何度も自動的に作成されていました。キャッシュファイルが作られすぎ?!結局原因は不明で分かりませんでした。

おそらくこれが原因のせいで、unicorn のエラーログを見たところ「secret_key が見つかりません」のエラーメッセージが繰り返し出力されており、ちゃんと production 用の secret_key は設定してあるにもかかわらず、production 環境での Rails アプリケーションが真っ白になる現象。

参考: Rails が production 環境で真っ白、SECRET_KEY_BASE 設定忘れが原因でした | EasyRamble

解決策

最終的に以下の方法で解決させました。

1. 一旦サーバーを再起動
2. デプロイ用ディレクトリの releases/, repo/, revisions.log をバックアップ
3. その後、デプロイ用ディレクトリの shared 以外のフォルダ・ファイルを全て削除
4. デプロイを最初からやり直し

これで一応復旧して、releases/2014******/tmp/cache が自動で作成されることもなくなりました。ちょっと力技での復旧ですけど、とにかく稼働させることを優先しまして。shared ディレクトリは残しておかないと、デプロイ時に再び bundle install が走っちゃうので、復旧に時間がかかります。

キャッシュが多すぎたのが原因だろうか…。よく分かりませんのでもう少し調査してみます。一応上記手順で、力技ながら復旧できることが分かったので、経験値は上がりました(笑)。一旦キャッシュファイルも削除、Rails によるキャッシュも無効にして様子見です。

スポンサーリンク
パーフェクト Ruby on Rails は、最近読んだ Rails 本の中では一番役に立った本です。Chef や Capistrano など Rails と共によく使用される技術にも触れてあります。Ruby on Rails 4 アプリケーションプログラミングは、入門的な内容で Rails の機能全体を網羅されています。
 
スポンサーリンク

Leave Your Message!