リファクタリング?? (自分メモ)
体が動かんなぁ。とりあえず unit から見直してみる。
ascii コード順で見るに設定マワリなナニ (ConfigManager) から、とゆーことで。
まずヒッカカるのは設定マワリの基本的な仕様を parabola と typo で統一したハズなんですが、試験が微妙(??)に違う。むむ、と唸りつつ app/models/config_manager.rb を見たトコロこれも微妙に違う。さらに app/controllers/admin/general_controller.rb を見たらこれまた微妙 (ただ、こちらは view の違いによる部分もあるんですが)。んで、 parabola の admin/general_controller.rb はバグもある。とほほほ。
controller の修正
parabola 側、更新処理がこんな (↓) 感じになっておる。
def update if request.post? Setting.transaction do for field, value in params[:setting] setting = find_or_create(field) setting.value = value setting.user_id = @session[:user].id setting.save end end config.reload(@session[:user].id) redirect_to :action => 'index' end end
問題なのは find_or_create の中身でして、typo 方面はこんな (↓) 感じの実装。
private def find_or_create(name) unless setting = Setting.find_by_name_and_user_id(name, @session[:user].id ) setting = Setting.new("name" => name) end setting end
parabola では find_by_name でやっちゃってるんだよねぇ。(困
微妙なのは機能試験がどうなってるか、だな。
# これは typo も同様??
とりあえずこれは対処が簡単なので (本当か??) メモを残しておいて別途対応。
typo と parabola の実装の差
微妙に異なる点をメモ代わりに列挙しとく。基本的に差異を吸収する方向で。
- typo の Setting クラスには description 属性があるが parabola には無い。
- 同様に ConfigManager.setting も description 属性への設定をしてない。
- typo の Configuration クラスでは integer や bool なナニ達の定義は文字列が使用されているが、parabola では数値リテラルになっている。(bool の場合は {true, false} と記述)
なんか中途半端な統一加減で。(苦笑
# てか、面倒臭いんでスルーしたような記憶もある。(こらー
とりあえず、TDD ってコトで試験の差異を埋める事から始めた方が良いのかな。
つづき
で、ざくっと見てみたんですが、体が動かぬ ...
# ってか、試験があまりドキュメントになってねぇ。(駄目
実装作業は明日を予定。