Hi all !
I, along with Koz' help and Josh Peek's template handlers, are
responsible for the complete (well, almost) ActionView rewrite. The
aim was to clean up the code and divide it into multiple classes
rather than just one ActionView::Base class which did everything. And
thus, making it very easy to write ActionView plugins & new template
handlers. For certain cases, performance benefits were there as well.
The purpose of this email is to get feedback from everyone who have
dealt with ActionView code before. So, please let us know if you'd
like to see any further improvements or if I could have done something
in a better fashion.
Here's an overview of current state :
- Glue between ActionController and views
- Only one object created per request
- Holds controller ivars, compiled templates, helpers
- has_many :view_paths ( per request and global )
- Interface between file system and ActionView.
- Locates proper template based on view paths and requested extension
( .js, .html etc. ).
- One object per template ( For example, usually there'll be one
Template object for layout.html.erb and one for action.html.erb during
a request )
- Holds local vars, file name, path etc.
- Delegates compilation/rendering of the template to appropriate
- Mainly responsible for compilation of template and holding any
handler specific information. Also used for fragment caching.