The name App sounds like the only root of the application structure (could be a singleton) but actually, it is also a container of a group of URLs that is independently configurable with middlewares and error handlers. The App.Group() and App.Resource() return a new App which is a child of the root App, it's OK, but they have the whole functions of App which is not desirable.
By #2226, a quick fix for #2185, I changed some of the internal implementations of App while keeping the external behavior the same, but there are still some issues caused by the current design. Since we are now discussing v1, the future of buffalo, so I would like to suggest that we keep this structure for the current version and improve the core when we move to the next version.
TODO
- make the
Home the container of a group of URLs and its independent middlewares and error handlers (half done)
- make
Home as a child of the App.
- make
App as a singleton (but we need more consideration for this since it is not always a good thing.)
Context
The name
Appsounds like the only root of the application structure (could be a singleton) but actually, it is also a container of a group of URLs that is independently configurable with middlewares and error handlers. TheApp.Group()andApp.Resource()return a newAppwhich is a child of the rootApp, it's OK, but they have the whole functions ofAppwhich is not desirable.By #2226, a quick fix for #2185, I changed some of the internal implementations of
Appwhile keeping the external behavior the same, but there are still some issues caused by the current design. Since we are now discussing v1, the future of buffalo, so I would like to suggest that we keep this structure for the current version and improve the core when we move to the next version.TODO
Homethe container of a group of URLs and its independent middlewares and error handlers (half done)Homeas a child of theApp.Appas a singleton (but we need more consideration for this since it is not always a good thing.)Context