Configuration とか ConfigManager とか Setting とか

微妙にとっちらかってる感が満点なので整理してから作業を。
ポイントと致しましては

  • settings テーブルの属性としては
    • name 属性が hash key
    • value 属性が hash の値
    • その他、user_id でユーザ毎の情報を切り分け。script/console で確認したら system_id なんていう微妙な名前の列を追加している模様 (げ
  • テーブル上では値を文字列で保持
  • ただし、config では値は型変換された形で格納されている
  • Configuration でデフォルト値を Item という名前の構造体にて保持
  • 上記は Configuration.fields というメソドでアクセス可能
    • ただし、value は読み替えが必要となる (これは typo の場合)
    • む、Configuration.fields の value 属性は文字列じゃなくても良い??
      • typo な configuration.rb は parabola 方式に変更か??
      • ってか、何故に文字列になってるのか謎
  • settings テーブルに行が存在しない場合 (config が空)、Configuration なデフォルト値を設定値として使用
  • protected な構造体 Item では以下の属性を持つ
    • hash key
    • ruby なデータ型 (ってかクラスか)
    • description (これは現時点で typo のみ使用)
  • 構造体 Item は fields という名前の hash に格納
  • 構造体 Item の属性について、typo と parabola で微妙な差異あり
    • parabola は name、type、default
    • typo は name、ruby_typo、description、value
    • これはある意味内部的なナニなので合わせる必要はないかなぁ
    • ただ、DRY っていう見地からは微妙、と言わざるを得ない気が

ってコトで修正の方針としては

  • typo の app/models/config_manager.rb の修正
    • reload メソドは parabola にアワせる
    • [] メソドも上と同様
    • Item 構造体の属性はそのまま (parabola 側を修正)
  • typo の app/models/configuration.rb の修正
    • value には文字列でなく、型に合わせたリテラル値を指定
  • parabola の app/models/config_manager.rb の修正
    • Item 構造体のメンバの修正
      • default → value
      • description の追加
      • それに伴なう微調整 (影響は外には無いハズ)
  • parabola の app/models/configuration.rb の修正
    • description の追加に伴なうナニ
  • parabola の app/views/admin/general/index.rhtml の修正
    • typo 式でスマートにリファクタリングができんものか
    • たぶん、app/controllers/general_controller.rb も修正が必要

あと、system_id 列が追加されてるんだったら、general_controller.rb 方面にその記述を追加しておく必要はある。(ただ、使ってねぇと言えば使ってねぇしー)

修正の方針は良いとして、試験をマージしとく必要があるんだった。(とほほほ

って、見てみたら

  • typo は configuration_test.rb
  • parabola は setting_test.rb

ってなってるし。(駄目

どうしたものやら。

追記

で、帰宅後に実装な、と思っていたのに帰りのバスに乗った瞬間に svnリポジトリに先日の変更を反映していない事を思いだす。とりあえず試験の検討はできるか。