リファクタリング?? (自分メモ)

体が動かんなぁ。とりあえず 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 の実装の差

微妙に異なる点をメモ代わりに列挙しとく。基本的に差異を吸収する方向で。

  1. typo の Setting クラスには description 属性があるが parabola には無い。
  2. 同様に ConfigManager.setting も description 属性への設定をしてない。
  3. typo の Configuration クラスでは integer や bool なナニ達の定義は文字列が使用されているが、parabola では数値リテラルになっている。(bool の場合は {true, false} と記述)

なんか中途半端な統一加減で。(苦笑
# てか、面倒臭いんでスルーしたような記憶もある。(こらー

とりあえず、TDD ってコトで試験の差異を埋める事から始めた方が良いのかな。

つづき

で、ざくっと見てみたんですが、体が動かぬ ...
# ってか、試験があまりドキュメントになってねぇ。(駄目

実装作業は明日を予定。