DRY descriptorファイルの情報量削減。
Widgetの情報やらページの情報をdescriptorファイルやmigrationファイルに書くのはDRYに反する(ActionControllerの定義とdescriptor定義で重複する部分がある、ということで
class HogeWidgetController < ActionController::Base is_widget {:display_name => ..., :permissions => ...} end
や、
class HogePageController < ActionController::Base is_page {:display_name => ..., :permissions => ...} end
でかけるようにする。descriptorファイルから widgets や pages メソッドの定義を除く。
ただし、リクエストごとにファイルを検査していては性能上問題があるので、コンポーネントインストール時に *_controller.rbを検出して、is_widget/is_pageの部分をDBにinsert/update書けるようにしないとだめ。