Jump to content

Merb: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
m fix developers - Ezra *and* Yehuda, as given in previous cites
typo, space before comma
 
(34 intermediate revisions by 17 users not shown)
Line 1: Line 1:
{{other uses}}
{{other uses}}
{{Infobox software
{{Infobox software
| name = Merb
| name = Merb
| logo =
| logo =
| screenshot =[[File:Merb screenshot.png | thumb | git check-out of the Merb framework, containing the core Merb modules.]]
| screenshot = [[File:Merb screenshot.png|300px | frameless]]
| caption = All you need... none you don't.
| caption = {{nowrap| All you need… nil you don’t }}
| author = Ezra Zygmuntowicz
| author = Ezra Zygmuntowicz
| developer = Ezra Zygmuntowicz & Yehuda Katz
| developer = Ezra Zygmuntowicz & Yehuda Katz
| released =
| released =
| latest release version = 1.1.2<ref>https://github.com/merb/merb/wiki</ref>
| latest release version = 1.1.3<ref>{{cite web|title=1.1.3|url=https://github.com/merb/merb/releases/tag/1.1.3|website=GitHub}}</ref>
| latest release date = {{release date|mf=yes|2010|06|17}}
| latest release date = {{release date|mf=yes|2010|07|12}}
| operating system = [[Cross-platform]]
| latest preview version =
| programming language = [[Ruby (programming language)|Ruby]]
| latest preview date =
| genre = [[Web application framework]]
| operating system = [[Cross-platform]]
| license = [[MIT License]]
| platform =
| website = [https://web.archive.org/web/20081204002911/http://merbivore.com/ http://www.merbivore.com ]
| language =
| discontinued = yes
| programming language = [[Ruby (programming language)|Ruby]]
| title = Merb: No code is faster than no code<ref>{{cite web|last1=Zygmuntowicz|first1=Ezra|title=No Code is Faster Than No Code|url=https://twitter.com/ezmobius/status/154477982193418240|website=Twitter|access-date=2 April 2015}}</ref><ref>{{cite web | last1=Grosenbach | first1=Geoffrey | title=Origin of, "No code is faster than no code." | url=https://twitter.com/ezmobius/status/61523924546093056 | website=Twitter | publisher=Ezra Zygmuntowicz | access-date=2 April 2015}}</ref>
| genre = [[Web application framework]]
}}
| license = [[MIT License]]
| website = [https://web.archive.org/web/20081204002911/http://merbivore.com/ http://www.merbivore.com ]
|discontinued = yes}}
'''Merb''', short for "[[Mongrel (web server)|Mongrel]]+[[eRuby#erb|Erb]]",<ref>{{cite web |url=http://osdir.com/ml/lang.ruby.mongrel.general/2006-10/msg00105.html |last=Zygmuntowicz |first=Ezra |title=ANN: Merb, Mongrel+Erb |work=[http://osdir.com/ osdir.com] |date=18 Oct 2006 }}</ref> was a [[model–view–controller]] [[web framework]] written in [[Ruby (programming language)|Ruby]]. Merb was merged into [[Ruby on Rails|Rails web framework]] on December 23, 2008<ref name="Boone">{{cite web |last=Boone |first=Paul |date=18 Sep 2008 |title=Rails/Merb performance comparison (on mongrel, jruby, tomcat, glassfish) |url=http://www.mindbucket.com/2008/09/18/rails-merb-performance-comparison-on-mongrel-jruby-tomcat-glassfish/ |work=[http://www.mindbucket.com/ mindbucket.com] }}</ref> as part of the [[Ruby on Rails|Ruby on Rails 3.0 release]].<ref>[http://edgeguides.rubyonrails.org/3_0_release_notes.html Ruby on Rails 3.0 Release Notes]</ref>


'''Merb''' is a discontinued [[model–view–controller]] [[web framework]] in [[Ruby (programming language)|Ruby]], notable as a precursor to Rails 3. It brought increased focus on speed and modularity to Rails 3.<ref name="Boone">{{cite web|last=Boone |first=Paul |date=18 Sep 2008 |title=Rails/Merb performance comparison (on mongrel, jruby, tomcat, glassfish) |url=http://www.mindbucket.com/2008/09/18/rails-merb-performance-comparison-on-mongrel-jruby-tomcat-glassfish/ |archive-url=https://web.archive.org/web/20110714095129/http://www.mindbucket.com/2008/09/18/rails-merb-performance-comparison-on-mongrel-jruby-tomcat-glassfish/ |url-status=dead |archive-date=14 July 2011 |work=mindbucket.com}}</ref><ref>{{cite web|url=https://edgeguides.rubyonrails.org/3_0_release_notes.html |title=Ruby on Rails 3.0 Release Notes |website=Ruby on Rails Guides |access-date=18 July 2020}}</ref> The name Merb is a contraction of "[[Mongrel (web server)|Mongrel]]" and "[[eRuby#erb|Erb]]".<ref>{{cite web |url=http://osdir.com/ml/lang.ruby.mongrel.general/2006-10/msg00105.html |last=Zygmuntowicz |first=Ezra |title=ANN: Merb, Mongrel+Erb |work=osdir.com] |date=18 Oct 2006 |url-status=dead |archive-url=https://web.archive.org/web/20091231134535/http://osdir.com/ml/lang.ruby.mongrel.general/2006-10/msg00105.html |archive-date=2009-12-31}}</ref>
== Relation to Ruby On Rails ==


== Precursor to and merge with Rails 3 ==
Merb 1.0 was released on November 7, 2008 at [[RubyConf]].<ref>{{cite web |url=http://merbist.com/2008/11/09/merb-1-0-released/ |title=Merb 1.0 released |last=Aimonetti |first=Matt |work=Merbist |date=9 Nov 2008 }}</ref> and is currently at version 1.1.


The Merb project was started as a "clean-room" implementation<ref>{{cite web |url=http://brainspl.at/articles/2008/12/23/merb-is-rails |title=Merb *is* Rails |last= Zygmuntowicz |first=Ezra |date=23 Dec 2008}}</ref> of the [[Ruby on rails|Ruby on Rails]] [[Model-View-Controller|controller stack]], but has grown to incorporate a number of ideas which deviated from Rails's spirit and methodology at the time, most notably, [[Modular programming|component modularity]], extensible [[Application programming interface#Web APIs|API]] design, and [[Scalability#Scale vertically .28scale up.29|vertical scalability]]. Most of these capabilities have since been incorporated back into Rails during the Rails/Merb merger announced on December 23, 2008.<ref name="dhh-merged-into-rails">{{cite web |last=Hansson |first=David Heinemeier |authorlink=David Heinemeier Hansson |title=Merb gets merged into Rails 3! |url=http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3/ |date=23 Dec 2008 |work=[http://weblog.rubyonrails.org/ weblog.rubyonrails.org] }}</ref><ref name="yehuda-rails3">{{cite web |last=Katz |first=Yehuda |authorlink=Yehuda Katz (web developer) |date=23 Dec 2008 |url=http://yehudakatz.com/2008/12/23/rails-and-merb-merge/ |title=Rails and Merb Merge |work=[http://yehudakatz.com/ yehudakatz.com] }}</ref>
Merb began as a "clean-room" implementation<ref>{{cite web|url=http://brainspl.at/articles/2008/12/23/merb-is-rails |title=Merb *is* Rails |last=Zygmuntowicz |first=Ezra |date=23 Dec 2008}}</ref> of the [[Ruby on Rails|Rails]] [[Model-View-Controller|controller stack]] but grew to incorporate several ideas that deviated from Rails's spirit and methodology at the time, most notably [[Modular programming|component modularity]], extensible [[Application programming interface#Web APIs|API]] design, and [[Scalability#Scale vertically .28scale up.29|vertical scalability]]. It was developed by Ezra Zygmuntowicz and Yehuda Katz. Most of these capabilities were added to Rails during the Rails 3/Merb merger.<ref name="dhh-merged-into-rails">{{cite web|last=Hansson |first=David Heinemeier |author-link=David Heinemeier Hansson |title=Merb gets merged into Rails 3! |url=https://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3/ |date=23 Dec 2008 |work=weblog.rubyonrails.org |access-date=18 July 2020}}</ref><ref name="yehuda-rails3">{{cite web|last=Katz |first=Yehuda |author-link=Yehuda Katz (web developer) |date=23 Dec 2008 |url=http://yehudakatz.com/2008/12/23/rails-and-merb-merge/ |title=Rails and Merb Merge |work=yehudakatz.com}}</ref> Merb was first released at the 2008 [[RubyConf]]<ref>{{cite web |url=http://merbist.com/2008/11/09/merb-1-0-released/ |title=Merb 1.0 released |last=Aimonetti |first=Matt |work=Merbist |date=9 Nov 2008}}</ref> and development has since stopped; Rails 3, therefore, serves as both the successor to Rails 2 and the successor to Merb.


== Differences from Ruby on Rails ==
Like Rails, Merb can also be used to write sophisticated applications and [[Representational State Transfer|RESTful]] Web services. It has been suggested that Merb is more flexible and faster than Rails.<ref name="Boone"/>


Merb's design attempted to address several criticisms of [[Ruby on Rails|Rails]] 2:
== Differences with Ruby On Rails ==
* lack of component modularity ([[Monolithic system|monolithic]] design)

* lack of an extensible API
Most of the key features and purported benefits of Merb have been integrated into Ruby on Rails during the course of development of Rails3. There will be no version 2 of Merb, with Rails 3 serving as the successor to both Rails 2 and Merb. However, historically, Merb's design was built with the intent of addressing a number of key criticisms of Ruby on Rails. This led Merb's developers to stress two key design principles, modularity, and an extensible API.
* lack of vertical scalability


=== Modularity ===
=== Modularity ===


Merb proper encompasses only the controller layer in the Model, View, Controller architecture. However, Merb serves as the integration point for a larger suite of technologies which operate in concert as an entire web application framework. The primary points of integration with Merb are the web server interface, the MVC model layer, the MVC view layer, and finally controller extensions and addons. Merb's default application stack incorporates [[Datamapper]] at the Model layer, [[ERuby|ERB]] at the view layer, and [[Rack (web server interface)|Rack]] and [[Mongrel (web server)|Mongrel]] at the web server layer.<ref>{{cite web |url=http://rubygems.org/gems/merb-core |date=23 Mar 2010 |title=merb-core gem dependencies}}</ref><ref>{{cite web |url=http://rubygems.org/gems/merb |date=23 Mar 2010 |title=merb gem dependencies}}</ref>
Merb itself encompassed only the controller layer in [[Model–view–controller|MVC]] architecture, and used a suite of complementary, optional plugins together to assemble applications. The primary integration points were the web server interface, the model layer, the view layer, and controller extensions and add-ons. Merb's default application stack incorporated [[Datamapper]] for models, ERB for views, and [[Rack (web server interface)|Rack]] and Mongrel as the web server layer.<ref>{{cite web |url=http://rubygems.org/gems/merb-core |date=23 Mar 2010 |title=merb-core gem dependencies}}</ref><ref>{{cite web |url=http://rubygems.org/gems/merb |date=23 Mar 2010 |title=merb gem dependencies}}</ref>

=== Well-defined API ===
Before the Merb / Rails 3 merge, Rails lacked a well-defined, documented, public API for extensions and plug-ins, leading to issues when Rails changes broke [[monkey patch|monkey-patches]] performed by plug-ins. With the Rails 3 / Merb merge, Rails gained a defined public API with a test suite,<ref name="yehuda-rails3" /> giving users and plugin developers a clearer, more stable API to build against, reducing plugin breakage from release to release.<ref name="dhh-merged-into-rails" />

=== Performance and scalability ===
Some early versions of Rails received bad publicity for lack of performance, frequently due to developer confusion about ActiveRecord queries. [[David Heinemeier Hansson]], the creator of Rails, stated that Merb re-wrote many core Rails pieces to be faster,<ref name="dhh-merged-into-rails" /> and incorporated those changes from Merb in the Rails 3 merge, promising users that "Rails 3 will get all the performance attention that the Merb guys are known for".<ref name="dhh-merged-into-rails" />


== References ==
== References ==
Line 42: Line 46:


== External links ==
== External links ==
* [http://www.merbivore.com/ Merbivore - Official Merb Site]
* [https://web.archive.org/web/20081204002911/http://merbivore.com/ Merbivore - Official Merb Site]

{{Prone to spam|date=November 2014}}
{{Prone to spam|date=November 2014}}
{{Z148}}<!-- {{No more links}}
<!-- {{No more links}}


Please be cautious adding more external links.
Please be cautious adding more external links.


Wikipedia is not a collection of links and should not be used for advertising.
Wikipedia is not a collection of links and should not be used for advertising.


Excessive or inappropriate links will be removed.
Excessive or inappropriate links will be removed. See [[Wikipedia:External links]] and [[Wikipedia:Spam]] for details.

See [[Wikipedia:External links]] and [[Wikipedia:Spam]] for details.


If there are already suitable links, propose additions or replacements on
If there are already suitable links, propose additions or replacements on the article's talk page.
the article's talk page, or submit your link to the relevant category at
DMOZ (dmoz.org) and link there using {{Dmoz}}.


-->
-->
Line 65: Line 66:
[[Category:Free computer libraries]]
[[Category:Free computer libraries]]
[[Category:Free software programmed in Ruby]]
[[Category:Free software programmed in Ruby]]
[[Category:Web application frameworks]]
[[Category:Web frameworks]]
[[Category:Software using the MIT license]]
[[Category:Software using the MIT license]]

Latest revision as of 22:30, 10 November 2023

Merb: No code is faster than no code[1][2]
Original author(s)Ezra Zygmuntowicz
Developer(s)Ezra Zygmuntowicz & Yehuda Katz
Final release
1.1.3[3] / July 12, 2010 (2010-07-12)
Repository
Written inRuby
Operating systemCross-platform
TypeWeb application framework
LicenseMIT License
Websitehttp://www.merbivore.com

Merb is a discontinued model–view–controller web framework in Ruby, notable as a precursor to Rails 3. It brought increased focus on speed and modularity to Rails 3.[4][5] The name Merb is a contraction of "Mongrel" and "Erb".[6]

Precursor to and merge with Rails 3

[edit]

Merb began as a "clean-room" implementation[7] of the Rails controller stack but grew to incorporate several ideas that deviated from Rails's spirit and methodology at the time, most notably component modularity, extensible API design, and vertical scalability. It was developed by Ezra Zygmuntowicz and Yehuda Katz. Most of these capabilities were added to Rails during the Rails 3/Merb merger.[8][9] Merb was first released at the 2008 RubyConf[10] and development has since stopped; Rails 3, therefore, serves as both the successor to Rails 2 and the successor to Merb.

Differences from Ruby on Rails

[edit]

Merb's design attempted to address several criticisms of Rails 2:

  • lack of component modularity (monolithic design)
  • lack of an extensible API
  • lack of vertical scalability

Modularity

[edit]

Merb itself encompassed only the controller layer in MVC architecture, and used a suite of complementary, optional plugins together to assemble applications. The primary integration points were the web server interface, the model layer, the view layer, and controller extensions and add-ons. Merb's default application stack incorporated Datamapper for models, ERB for views, and Rack and Mongrel as the web server layer.[11][12]

Well-defined API

[edit]

Before the Merb / Rails 3 merge, Rails lacked a well-defined, documented, public API for extensions and plug-ins, leading to issues when Rails changes broke monkey-patches performed by plug-ins. With the Rails 3 / Merb merge, Rails gained a defined public API with a test suite,[9] giving users and plugin developers a clearer, more stable API to build against, reducing plugin breakage from release to release.[8]

Performance and scalability

[edit]

Some early versions of Rails received bad publicity for lack of performance, frequently due to developer confusion about ActiveRecord queries. David Heinemeier Hansson, the creator of Rails, stated that Merb re-wrote many core Rails pieces to be faster,[8] and incorporated those changes from Merb in the Rails 3 merge, promising users that "Rails 3 will get all the performance attention that the Merb guys are known for".[8]

References

[edit]
  1. ^ Zygmuntowicz, Ezra. "No Code is Faster Than No Code". Twitter. Retrieved 2 April 2015.
  2. ^ Grosenbach, Geoffrey. "Origin of, "No code is faster than no code."". Twitter. Ezra Zygmuntowicz. Retrieved 2 April 2015.
  3. ^ "1.1.3". GitHub.
  4. ^ Boone, Paul (18 Sep 2008). "Rails/Merb performance comparison (on mongrel, jruby, tomcat, glassfish)". mindbucket.com. Archived from the original on 14 July 2011.
  5. ^ "Ruby on Rails 3.0 Release Notes". Ruby on Rails Guides. Retrieved 18 July 2020.
  6. ^ Zygmuntowicz, Ezra (18 Oct 2006). "ANN: Merb, Mongrel+Erb". osdir.com]. Archived from the original on 2009-12-31.
  7. ^ Zygmuntowicz, Ezra (23 Dec 2008). "Merb *is* Rails".
  8. ^ a b c d Hansson, David Heinemeier (23 Dec 2008). "Merb gets merged into Rails 3!". weblog.rubyonrails.org. Retrieved 18 July 2020.
  9. ^ a b Katz, Yehuda (23 Dec 2008). "Rails and Merb Merge". yehudakatz.com.
  10. ^ Aimonetti, Matt (9 Nov 2008). "Merb 1.0 released". Merbist.
  11. ^ "merb-core gem dependencies". 23 Mar 2010.
  12. ^ "merb gem dependencies". 23 Mar 2010.
[edit]