読者です 読者をやめる 読者になる 読者になる

未踏作業日誌――余計なもの作るよ!

未踏の作業日誌的なものを書きましょうということで書くことにしました.余計なことばっかりしています.

3日前にRails本体がまた謎過ぎて諦める

3日前,Railsでサポートされているヘルパーがまともに動かなくて諦めた.テンプレートエンジンにSlimを使っていてそれが悪いのかどうかわからないけれども,新しくフォームを作成しようとするとエラーが起きる.

結局,当初予定していたSinatraで作り直してる.Modelは自作するのではなく,Sequelを利用して,可能な限り手間を省く方針.

 

予兆はいくつかあった.バリデーションのタイミングがわからないとか,Railsのマニュアル見ても戻り値が一切書いてないとか,RailsActiveRecordの整合性を確認せずにコードを自動生成してコケるとか,railsコマンド使ってもMVCの整合性を取ってくれずにコケるとか.

Rails使って楽になるのはScaffold使っている時だけで,これを拡張しながらアプリケーションを作るには,それなりの経験力がないとまともに組むことができない.作業の比重がさすがにRailsの操作方法から来るエラーばかりになってしまって,一切コーディングできなくなってしまったので,ここはさすがに一歩引いて諦めたほうがいいと思った.

 

そんなわけで,今はSinatra+Sequel+Slimで作っている.

SequelはただのMySQL用のコネクタと思っていたら違っていたらしい.1日かけてモデルや自動バリデーション機構とかを自作していたとき,マニュアルを見たらモデルも使えますって書いてあった.

SequelはRailsよりもフランクにモデルを書くことができる.アソシエーションが少し不安なところもあるけれども,自作バリデーションも作りやすく,なんだかんだ言って,RailsActiveRecordが不調和を起こす状態よりかは改善している.

一度,Railsでシステムを組んでしまっていたため,作り始めから元に戻すまでほぼ1日で完了した.

 

昨日は日本語を混ぜてレコードを登録しようとしたら,見事に文字エンコーディングでハマった.夜中だったので緊急対応ということで一生懸命取り組んでいた記憶があるものの朝起きたらエラーが出なくて直ってた.そこら中に,エンコーディング対策を施したので,どことどこが噛み合っているのか全くわからない.

これでシステムを完成させる準備が整ったので,急いでそれらしいものを作ろうかと思う.

 

どうでもいいけれども,Base64で調べるとたまに古いマニュアルを掘り当ててしまって,そこでは「Base64::b64encode」と書いてある.これは間違いで,「Base64::encode64」と書くのが正しい.なぜNoMethodErrorが出てくるのかよくわからなかったので調べるのに時間がかかった.

GoogleRubyのバージョン指定すると,それに合致したと思われる記事を掘り出してくれる機能とか作らないんだろうか? エンジニアにとって喉から手が出るほど欲しいものだと思う.