日々精進

新しく学んだことを書き留めていきます

Rails不具合修正反省2

SVNからソースコードを取ってきてローカルに置く。
・動かしてみるとRailsの中にエラーになっているコードを発見。
・最新版のRailsなら動くんじゃね?と思い、Railsをunfreezeしたあと2.3.5でfreeze
WEBRICKサーバが動かなくなる。。IDEからWEBRICKサーバを起動した場合、エラーメッセージが出なくて困った。コマンドラインからscript/serverを実行してエラーメッセージを確認。検索するとrake rails:updateを実行してないからだとすぐわかる。
・rake rails:updateを実行してもだめ。environment.rbとdevelopment.rbの設定を変更しないといけないとわかる。これはエラーメッセージで検索してもなかなかわからず、苦労した。
・ついにWEBRICKサーバが起動するようになり、アプリも正常に動作する!感動の瞬間。
SVNリポジトリにアップロードしようとする。
しかし、更新対象のファイルが大量に出てきたのと、色々試行錯誤していたので間違ったファイルも含まれているんじゃないかと不安になった。
そのため他のフォルダにソース一式を取り直してそこに今までやった修正を再度適用することに。
・適用完了後にSVNにコミットしようとしたが、できない。
クリーンアップしてくださいというメッセージが出たのでクリーンアップを実行するが、これもエラーになる。freezeし直したRailsフォルダがエラーになってる。
・色々悩んだ末、とりあえずRailsフォルダ以外を先にコミットする。
・その後色々考えた後、ふと思い立ってRailsフォルダを他の場所に移してフォルダの削除をコミットしてみる。
・その後Railsフォルダを追加すると無事成功!フォルダの追加と削除は同時にできないんだね。そもそも追加、削除という意識がなかったけど。。一回フォルダ削除してるから確かにそうだけどね
Capistranoをインストールしてデプロイしようとするがだめ。
・色々調べた後でドメインを間違えていることに気付く。
ドメインを修正するとデプロイできるようになったが、デプロイ時にCapistranoが作るはずのシンボリックリンクができない。
・色々調べたが結局コマンドが間違っていたことがわかる。
cap deploy:update
を実行していたが、これだとCapistranoがデフォルトで用意しているデプロイタスクしか実行されないっぽい。
cap deploy
に修正するとCapfile内で定義したタスクも実行してくれるようになった。


教訓
WEBRICKサーバ起動時にエラーが起きたらコマンドラインからWEBRICKサーバを起動してエラーメッセージを確認すること
・チェックインはこまめに。ローカルPCにクリーンなフォルダを用意してそこで作業する。実験的にファイルを変更したら変更前の状態にすぐ戻す。


課題
・またDreamHostRubyのバージョンが上がったら同様の障害が起きるかも知れない。
Rubyのバージョンの固定がなぜかできない。
代替案は監視プログラムを使ってサービスのダウンをいち早く検知すること。
・使用しているソフトに関する知識が不足している。少なくともApache,rails,subversionといったメジャーなソフトについてはもっと知識を付けておきたい。本で勉強するか?