rails 6

貴重な午後の4時間を浪費

いきなり、railsサーバが立ち上がらなくなった。大学院の教材作成。そもそも、内容に大きな修正はない、はずだったのに、rails 5が rails 6になったら、Coffee Scriptが標準ではなくなった。去年の教材は、Coffeeを使って書いている。

普通に考えたら、Gem にCoffeeを追加すればいいだけなんだけれども、Coffeeを入れると、therubyracerを追加しないとならないみたいで、そうなってくると、javascriptの扱いがややこしくなってくる。(それで、評判がイマイチなんだろうか。)

あろうことか、時々固まる。仕方ないのでVMwareを何度か強制シャットダウンした。そうしたら、サーバが全く立ち上がらなくなった。エラーの最後は

3: from /var/lib/gems/2.5.0/gems/webpacker-4.0.7/lib/webpacker/manifest.rb:18:in `refresh’
2: from /var/lib/gems/2.5.0/gems/webpacker-4.0.7/lib/webpacker/manifest.rb:84:in `load’
1: from /usr/lib/ruby/vendor_ruby/json/common.rb:156:in `parse’
/usr/lib/ruby/vendor_ruby/json/common.rb:156:in `parse’: 765: unexpected token at ” (JSON::ParserError)

JSONなんて、触ってないぞ。いや、確かにJQuery-UIのgemを入れたり、消したり、したっけか。WEB Consoleに、Cannot find module jQuery-uiが表示された。Coffeeから書き換えたJavaScriptの関数を、全く読んでくれない。どう試しても、Not Foundになってしまう。ドツボった。そのドツボを何とかする試行錯誤の中で、突然落ち出した。

煮詰まりました。待てよ、と。webpacker/manifest.rb:84だって?

def load
if config.public_manifest_path.exist?
JSON.parse config.public_manifest_path.read
else
{}
end
end

ここで落ちてる。辿ってみたら、public/packsの下に manifest.jsonというファイルが出来ていて、これが空だった。固まった際にこのファイルを作りに行ったに違いない。そこで強制リセットしたから、空のままになってしまい、それで JSON-ParseErrorが出たみたいだ。このファイルを消したら、動いた。良かった。

と言いつつ、クラッシュからは回復したけれども、coffeeからjavascriptに書き戻した部分が、全く動いていない。これが解決しないと、教材が仕上がらない。

rails 4から rails 5になった際に、何とか Coffee Scriptも、ある程度読みこなせるようになったのに、また標準から外れた?(振り回されてるなぁ。)

加えて、Ruby on Railsを使ったら、何とかAjaxでのプログラミングを、割とサクサクと書けるようになったのに、有限会社シグナリスでは Python / Djangoを主力ツールにしましょう、とかなったお陰で、また「初心者」に逆戻り。(なんて決断をしてくれるんだ。社長の顔に唾を吐きかけたいぞ。)勉強のやり直し。せめて、Ruby on Railsの世界でだけは、そこそこ「中級レベルのプログラマ」をキープしていたかったのに、Coffeeを外すなんて・・・ これまで書き溜めたスニペットを、どうしてくれる!ってか、また書きなおしゃいいってか?スニペットの意味ないじゃん!

いいものを積極的に取り入れる。環境が変わったら、取り入れて間もないものでも、思い切って捨てる。その方針は、悪いとは思わないけれど、ユーザに負荷をかけすぎてる気もする。ってか、すごく負荷がかかってる。コードの書き直しとか、環境の構築し直し、それが済んだ後の教材の書き直し。この、納期が混んでて忙しい時に、ちょっとイラついた。疲れた。(今日は、タバコの本数が多い。)

まぁ、クラッシュの原因は、LINUX on VMwareが固まったために、僕がやった何回かの「強制シャットダウン」だったんだろうから、悪いのは僕だ。キャッシュを消しただけで回復したのはラッキーだったけれども、それにしても、4時間やって、まだ解決策を見つけていない。

教材、どうしようかなぁ。ここの部分を動かさないと、授業が1時間半持たない。ヘバッタ。動いたのは良かったけど。

気を取り直して、再挑戦。

コメントを残す