我正在研究一个包含大约10个不同功能组件的Sinatra应用程序 . 我们希望能够将这些组件混合并匹配到应用程序的单独实例中,完全由config.yaml文件配置,类似于:
components:
- route: '/chunky'
component_type: FoodLister
component_settings:
food_type: bacon
max_items: 400
- route: 'places/paris'
component_type: Mapper
component_settings:
latitude: 48.85387273165654
longitude: 2.340087890625
- route: 'places/losangeles'
component_type: Mapper
component_settings:
latitude: 34.043556504127466
longitude: -118.23486328125
如您所见,组件可以多次实例化,每个组件都有自己的上下文设置 .
每个组件至少包含一个路由,其中“route”属性来自用于基础的配置文件 .
组织和实例化模块代码的最佳方法是什么?
2 回答
这类似于include的提议,但它不需要访问rackup文件 .
写你的各种处理程序,如:
然后在您的主应用程序文件中:
我已经使用这种结构来构建一些相当复杂的Sinatra应用程序 . 它的扩展与Rails一样 .
EDIT
要让您的配置文件定义路由,您可以执行以下操作:
TIMTOWTDI - 有更多_than_one_way_to_do_it :),那是一个 . 但实际上我用另一种方式 . 我使用Sinatra / Base开发模块化应用程序 .
我有每个应用程序的simgle路线 .
您可以为每个实例设置变量集 . 您可以在其模块上开发每个“组件” .
看看这里 . http://codex.heroku.com/
玩得开心 :)