Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…
Cannot retrieve contributors at this time
252 lines (202 sloc) 11.8 KB
== 0.9.0
* Finally merged bigfix/rails3 branch - Erector now works with either Rails 2 or Rails 3 (or neither)
* 'scss' external type [needs tests]
* dot-class and dot-id-bang syntax
* expanded widget hierarchy; now XMLWidget can be used as the base for a non-HTML widget (for XML formats that may not want the HTML tags and methods)
* 'emit' method as preferred synonym for to_html (since we now support non-HTML widgets)
* 'tag' macro to add your own tag types (esp. to XML widgets)
* :snake_case option to tag (if you want the method name to be nice for a CamelCase tag name)
* remove dependency on rake gem
* rename 'render' method to 'emit' (to reduce confusion with Rails' "render" methods)
Deprecated or Removed:
* text(widget) -- passing a widget to the text method is now an error
* element! -- removed
* empty_element -- removed
* all_tags -- removed (perhaps to be replaced)
* to\_s -- use emit or to\_html instead
* join -- use the :join option instead
== 0.8.3
* Finally merged bigfix/rails3 branch - Erector now works with either Rails 2 or Rails 3 (or neither)
== 0.8.2 - 2011-02-16
* Close tags on exception or return
* Gem dependency cleanup
* Bug: Dependency did not correctly work with uniq (reported by Daniel Barlow)
== 0.8.1 - 2010-07-17
Bugfix release to improve Ruby 1.9 compatibility
== 0.8.0 - 2010-07-07
* deprecated to_s in favor of to_html
* to_text does some formatting
* barebones Sass support
* "depends_on" is the new way to include JS and CSS files (replacing "external"). More flexible calling structure.
* line wrapping via the :max_length parameter to to_html
* line wrapping preserves leading and trailing spaces
* jquery method takes optional first parameter (:load or :ready)
* delegate method_missing to parent widget
* 'embed' and 'param' are now self-closing tags (as per browser warnings)
* Converted Widget#context to take a params hash.
* Exposed an Output object, with rather useful #placeholder method
* Defined Widget#output to delegate to #parent if @parent is not already set.
* Removed :parent param for Output#initialize in favor of a block.
* Page#extra_widgets
* Page only emits externals from widgets that have been rendered on it
* in-memory widget caching (still experimental)
* Compatibility with Rails 2.3.5 HTML safety
* Rails 2.3.8 compatibility
* To render from a Rails context, you must now go through Erector::Rails.render; do not call to_s(:parent => @view) directly
* rails_xss plugin support
* additional render :widget options passed to to_s. This means that you can do:
render :widget => MyWidget, :content_method_name => :my_content
* Widget#h is now idempotent
* [bug]
* [bug]
* [bug] double-rendering
== 0.7.3 - 2009-12-01
* fix bug in pass-block-to-new inline page rendering
* externals can accept a File (or any IO, actually)
* Add Widget.controller_assigns_propagate_to_partials: lets you keep controller instance variables from propagating to partials, so that you don't have this giant "global" namespace that partials can pull from. Enforces encapsulation much better.
* Add Widget.ignore_extra_controller_assigns, which allows widgets to use #needs but silently ignore excess controller variables, rather than raising an exception instead. This can be very useful for transitioning large codebases to Erector.
* Factor out directly-delegated methods into an array; add url_for and image_path.
* Make Erector work with the Cells plugin for Rails (
Erector tool:
* Make 'erector' ignore ERb trim markers ("-%>").
* Make 'erector' process ERb escapes in HTML attributes correctly.
* Make sure 'erector' adds parentheses to function calls when necessary.
* Don't add empty strings to the end of converted attributes.
* Don't omit empty attribute strings.
* Allow setting an alternate superclass for the new widget coming from the 'erector' tool.
* Add --method switch to 'erector', in case you don't want the base 'content' method overridden, but something it calls in your superclass, instead.
== 0.7.2 - 2009-11-16
* Widget#url and #css accept optional extra attributes (e.g. 'media')
* Externals accept optional extra attributes (e.g. 'media')
* Page:
* body\_attributes and html\_attributes
* allow suppressing of basic styles (right/left/clear)
* now an InlineWidget
* erector method passes in parameters to both to\_s and the widget's constructor
* Widget#dom\_id method to generate a unique id
* Widget#to\_text method to strip tags
* supports HTML5 element names
* Widget#text! and #element! which don't escape their parameters
* Better Rails initialization
* Don't emit an attribute with an empty array of values
* Enhanced support for comments, including IE conditional comments
* jQuery method now compatible with jQuery.noConflict()
== 0.7.1
* externals mechanism
* Page widget
* FieldTable widget
* EnvironmentBadge widget - inspired by
* added 'jquery' method to perform a script on $(document).ready
* removed the "alias\_method :inspect, :to\_s" since it made debugging inside widget constructors hard, and what was it for anyway?
* Instance variables may begin with a '@'
* Fixed Rails integration regressions
* Added *.ert templates (Erector Template, similar to Markaby)
* #comment method to emit HTML comments (naturally)
== 0.7.0 / 2009-09-27
* Changed behavior of inline blocks. See Widget#new documentation.
* Introduced "Erector::Inline" and "Erector.inline" so people using the old inline semantics can upgrade more easily.
* Likewise for "Erector::InlineRailsWidget" and "Erector::RailsWidget.inline".
* Due to popular demand, parameters no longer automatically create accessor methods, even if you declare them with 'needs'. You'll have to type out "attr\_accessor :underpants" yourself.
== 0.6.8 / 2009-09
* Added missing tag 'embed'
== 0.6.7 / 2009-06-17
* Fixed bug where needs did not get propagated when including modules.
== 0.6.6 / 2009-05-25
* fix to_a bug that slipped in yesterday when I wasn't looking
* attempting to assign a local variable that overlaps with an internal one raises error
* attempting to 'needs' a variable that overlaps with an existing method raises error
== 0.6.4 / 2009-05-24
* mixin: do "include Erector::Mixin" and now "erector { }" will instantiate and to_html a widget for you
* "erector" command-line tool improved:
* if converting an HTML/ERB file under a "views" directory, uses "Erector::RailsWidget" as parent class
* no longer chokes on "if IE" directives
* changes 'yield' in a scriptlet to use a missing "@content_for_layout"
* escapes single quotes inside text strings
* requires treetop 1.2.5
* documentation overhaul, web site arguably prettier
== 0.6.3 / 2009-05-06
* Major update to API. You *will* have to change your code. There are deprecation warnings/errors
and there should be an upgrade guide up on the website soon.
* 'render' renamed to 'content'
* widget constructor only takes one parameter, an 'assigns' hash (plus the optional default block)
* to render one widget from inside another, use the 'widget' method (not 'render_to'). This method
accepts either a widget instance, or a widget class and an assigns hash.
* 'needs' macro to declare the variables your widget accepts via the 'assigns' constructor parameter
* Removed Widget#to_html caching, which fixed indentation issues.
* BUGFIX: Indentation level is now correctly propagated to nested widgets.
* Erector's Rails support strategy has changed. The released version of Erector only supports the latest stable
Rails version (currently 2.3.2). If you need support for earlier versions of Rails, there are separate
Git branches for each one, but we will not be in the habit of keeping these up to date with the latest
features and patches.
* Renamed the command line tool to 'erector'
== 0.5.1
* Added methods to easily render additional HTML elements (col, object, and about a dozen others). There are now methods for all non-deprecated elements from the HTML 4.0.1 spec. As before, if erector doesn't have a method built-in, you can still call the element or empty_element method to output any tag.
* The method instruct!, which was a deprecated synonym for instruct, has been removed.
* Fixed bug in resolving view files for pluralized controllers
=== 0.5.0 / 2008-12-13
* install_dependencies refreshes the rails_versions directory
* Widget takes a string instead of an IO object to be more compatible with Rails.
* Removed Doc
* Widget writes directly to output string instead of to #doc
=== 0.4.200 / 2008-10-11
* Erector can now pretty-print the generated HTML to make it easier to read.
* Add join method to Erector::Widget.
=== 0.4.191 / 2008-07-29
* Renamed HtmlParts to Doc
* Widget#doc is now a HtmlParts which proxies to the passed in IO stream
* Better compatibility with standard Rails rendering because ActionController::Base#render and #render_widget now have the Widget write directly to _erbout.
* ActionView::Base objects run with Erector now receive all of the instance variables
* Erector works with erb layouts
* Deprecate fake_erbout
* Better handling for file with .html.rb extension.
* Fix overwriting issue when using Rails helpers
* New method Widget#character
* Widget#nbsp without arguments now outputs a single non-breaking space.
=== 0.3.110 / 2008-05-29
* support capture from rails helpers, allowing form_for/form_tag to work right
* fix bug in view_paths support (finding views was hosed)
=== 0.3.105 / 2008-05-29
* Lots of changes to support Rails integration better.
* Add partial support for render :partial.
* More Rails helpers proxies added to helpers.rb.
* Fake erbouts can now nest, allowing better support for Rails helpers like form_for (though they're currently capped at 10 deep to head off infinite regress).
* Rails finds both .rb and .html.rb files inside the app/views directories.
* Use Rails view_paths instead of hardcoded RAILS_ROOT/app/views (patch by Rami Grossman)
* add 'url' and 'css' convenience methods to Widget
=== 0.2.83 / 2008-04-23
* "erect" supports command-line options
* "erect" now works backwards -- you can output static html from a widget.rb file
* The web site is generated from erector classes (still pretty minimal though)
=== 0.2.61 / 2008-04-18
* Improvements to "erect"
* works on HTML attributes (including namespaced attributes and hyphenated attributes)
* works on directories (recursively looking for .html and .html.erb and .rhtml files)
* converts DOCTYPE nodes
* deals with HTML entities inside text and attributes
=== 0.2.54 / 2008-04-15
* New script "erect" to convert (some) .html.erb files into erector classes.
=== 0.2.42 / 2008-04-11
* Rails Controller now can render Erector widgets using #render
* Erector views can live inside Rails "app/views" directory, just like other views
=== 0.1.25 / 2008-02-26
* nbsp method
* :class => ['one', 'two'] (that is, passing an array rather than a string)
... perhaps one or two I forgot.
* rename tag to element
* add empty_element feature
* for the built-in HTML tags, knows which ones should be empty and which shouldn't be.
For example, generates `<input />` rather than `<input></input>`
* text and attributes are quoted by default; call raw to avoid this
* h is rarely necessary now, but it returns a string rather than appending to the buffer
* nbsp method turns spaces into non-breaking spaces
* sending in an array for attribute values (typically CSS classes) concatenates them separated by spaces
* The column definition name can be a Proc that gets executed.
* Renamed instruct! to instruct (old one remains as a deprecated method for now), as it is no more side-effecting (or dangerous or whatever) than any other method in Widget.
=== 0.1.0 / 2008-02-13
* First public release
=== 0.0.1
* Was on
Jump to Line
Something went wrong with that request. Please try again.