日々精進

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

Rails不具合対応反省1

事実
・本番環境のproduction.logを確認し、以下のエラーメッセージを発見した。
ActionView::TemplateError (undefined method `length' for #) on line #44 of movie/top.rhtml:


・エラーメッセージで検索するとrubyのバージョンが1.8.7になって言語使用が変わったことが原因らしいとわかる
http://d.hatena.ne.jp/kusakari/20090113/1231814715


rubyのバージョンを固定する方法を探し、複数のバージョンのruby共存させる方法が見付かる。
prefixやsuffixを付ける方法やrvmというパッケージを使う方法があるらしい。
http://doc.loveruby.net/wiki/HowToInstallRubys.html
http://d.hatena.ne.jp/f96q/20100217/1266393976


rubyのバージョン1.8.5をダウンロードし、サーバでコンパイルする。
環境変数にruby1.8.5へのパスを追加するも、だめ。
・てかPassengerにどのRubyインタプリタを使わせるか指定するオプションがあるんじゃね?と気付く。
・PassengerRubyというオプションをApacheのconfigに書けばいいらしい。DreamHostはconfigファイルをいじらせてくれないので.htaccessに書く。
・今まで出ていたのはRailsのエラーだったが、上記変更によってApacheがエラーを吐くようになる
(;´Д`)
・設定は合っているはずなのにどうしてもだめ。やむを得ずRuby1.8.7に合わせてソースコードを変更する方針に転換。
・ローカルPCにRuby1.8.7,Rails,NetBeansをインストール
・gemが使えなくてはまる。Rubyのインストール先がProgram Files以下だと使えなくなるらしい。
・C:\Rubyに再度Rubyをインストール
Apacheを起動しようとするが起動せず。
netstat -oanコマンドで使用されているポートを調べると80番がSkypeに使われていることが判明したのでSkypeを終了させ、Apacheのサービスを起動させる。
でも忘れてたけどWebRickサーバを使って開発するからApacheはいらないんだよね。。


続く