sinatraが動かなくなったので、でっちあげで動くようにする

年次大会の優秀発表賞を受賞したのを自分のホームページに書くかーと思ってさくらの自分のホームページを更新したりしていて、あれこれしていたら動かなくなったorz。先週末潰しても解決できず、今日やっと解決したのでメモ的に残しておく。明らかに対処法としては正しくなさそうな気がするが、ホテルのネット環境越しで作業するのはきついので、暫定的にこれでいいや...。tiltを入れたかっただけなのにどうしてこうなった。

環境

Ruby自体やgem関係は~/localに入れている。

www1275 /home/syou6162% ~/local/bin/ruby -v
ruby 1.9.2dev (2009-07-18 trunk 24186) [i386-freebsd7.1]
  • haml-3.1.3
  • rack-1.4.0
  • sinatra-1.2.6
  • tilt-1.3.3
  • sass-3.1.7

LOAD_PATHを読みに行ってくれない

以前は

$LOAD_PATH.unshift '/home/syou6162/local/lib'

とやっておけばライブラリを読みに行ってくれていたのだが、あれこれやっているうちに読みに行ってくれなくなった。絶対正しくないと思いつつも

$LOAD_PATH << "/home/syou6162/local/lib/ruby/gem/gems/haml-3.1.3/lib"
$LOAD_PATH << "/home/syou6162/local/lib/ruby/gem/gems/rack-1.4.0/lib"
$LOAD_PATH << "/home/syou6162/local/lib/ruby/gem/gems/sinatra-1.2.6/lib"
$LOAD_PATH << "/home/syou6162/local/lib/ruby/gem/gems/tilt-1.3.3/lib"
$LOAD_PATH << "/home/syou6162/local/lib/ruby/gem/gems/sass-3.1.7/lib"

とパスを直書きして暴力的に対処orz。こんなことしていたらライブラリのバージョン上げる度にLOAD_PATHいじらないといけないので絶対違うんだけど、動かねぇ。。。

URI#decode_www_form_componentがないと言われる

パスを読みに行ってくれるようにはなったもののURI#decode_www_form_componentがねぇぞこらと怒られる。色々調べていると、以下に辿りついた。

1.9.1と1.9.2との互換性がどうの...と書いてあるが、結局どうすればいいかよく分からず。1.9.1をアンインストールして1.9.2をインストールしてみたが、そうすると他のライブラリがこけ始めて嫌になってきたので、クラスを上書きすることにしてしまった(ぇ。以下から足りないと言われているメソッドを自分のstart.rbとかその付近に上書きしてしまった。

sassのメドッドがprotected

上のを修正しているとやっとホームページは見れるようになったのだが、cssを今度は読みに行ってこけている。エラーを読むと

NoMethodError - protected method `visit' called for #<Sass::Tree::Visitors::CheckNesting:0x28fd0714>:

となっている。この辺からネット環境も遅いのでイライラが頂点に達し、sassのVisitors以下のクラスのprotectedをコメントアウトしてしまった。絶対違うと思いつつも元気が残されていなかったのでこうしてみた。動いたら正義(ぇ。