Born Too Late

Yuya's old tech blog.

Padrino で Mongoid のタスクがうまく実行できていなかった件

2012-02-26 14:41:21

久々に Padrino で開発していて, データベースには MongoDB, データ永続化層として Mongoid を使っています.

ところがインデックスの作成が上手くできませんでした.
Padrino x Mongoid という構成では, インデックスの作成に以下のコマンドを使います. (長い)

コンソール上では特に問題無く終わったかのようにみえるのですが, 実際は何も起こらずに終わっていました.
MongoDB のコンソールを見ても, 特にインデックスの作成が試みられたようなログは残りません.

調べた所, rake タスク自体に問題がありました.

これはモデルクラスを探索し, 見つかったものを Class オブジェクトの配列として返すものなのですが, モデルクラスのファイルの位置の指定に間違いがあり, 常に空の配列が返って来ていました.
これだと, 探索が行われるのが app/models/*.rb と /models/*.rb となってしまいますが, 実際には models/*.rb を探索する必要があります.

1 Byte の追加でうまく問題が解決しました.
テストはもともと無かったし, ファイルシステムが絡むからめんどいなーと思って書いてません.
すいません...

GitHub で報告したらすぐに取り入れられました.
gem でのリリースはまだですが, これもそんなに時間はかからないと思います.

どうも Padrino のモデルクラスの置き場所が, ./app/models から ./models に移ったようで, そのときの変更のときからずっと壊れていたようです.
多分 7 ヶ月間ずっと動いていなかったみたいなんですが, Mongoid ってあんまり使われていないんでしょうか...

ウェブサービスを作ろうとするとフレームワークのバグにハマり, それの修正で満足してしまって結局ウェブサービスが完成しない, という現象に名前が欲しい.