Slideshare.net (beta)

 
Post to TwitterPost to Twitter
Post: 
Myspace Hi5 Friendster Xanga LiveJournal Facebook Blogger Tagged Typepad Freewebs BlackPlanet gigya icons

All comments

Add a comment on Slide 1

If you have a SlideShare account, login to comment; else you can comment as a guest


Showing 1-50 of 5 (more)

Merb

From vishnu, 2 years ago

By Luke Francl (look@recursion.org) Presented at the Ruby Users o more

5576 views  |  0 comments  |  5 favorites  |  152 downloads
 

Categories

Add Category
 
 
 
 

Groups / Events

 

 
Embed
options

More Info

This slideshow is Public
Total Views: 5576
on Slideshare: 5576
from embeds: 0

Slideshow transcript

Slide 1: Merb and why you potentially should care By Luke Francl (look@recursion.org) Presented at the Ruby Users of Minnesota, March 27, 2007.

Slide 2: Merb = Mongrel + ERB By Ezra Zygmuntowicz Merb = Mongrel + ERB, written by Ezra Zygmunotgonna happen. When I heard Merb was Mongrel+ERB, I thought “Ah, PHP is making a comeback.” But Merb is actually a small MVC framework similar to Rails in many ways. Key points about Merb

Slide 3: Merb is thread-safe Merb does not use ActionPack (Rails controller/view), which is the main oender. Note: Ruby uses \"green threads\", so I believe a that to take advantage of a multi-core computer, you will need to start one Ruby instace per processor core.

Slide 4: Merb uses Erubis for embedded Ruby Merb uses Erubis for ERB - 3x faster than ERB - 10% faster that eRuby (written in C)

Slide 5: Merb does not use CGI.rb

Slide 6: Request Apache 2.2 mod_proxy_balancer Mongrel buffers the Mongrel upload. Rails blocks while processing the request. Rails CGI.rb causes CPU spike. It is *NOT TRUE* that Mongrel blocks while you are uploading a file. Rails blocks while you are *processing* the file.

Slide 7: [File] upload doesn't block Rails actions going on, when you finally pass this to Rails you'll block that Mongrel process while cgi.rb is going. This is why you should make a separate Mongrel handler to do all of your upload processing and file preparation before you pass the fully cooked stuff to Rails. Mongrel running cgi.rb in a thread is much more efficient than Rails running cgi.rb inside a lock. - Zed Shaw So, if your app has to deal with the uploads of a lot of large files which you need to do processing on, a custom upload handler will save your butt. upload

Slide 8: Request Apache 2.2 mod_proxy_balancer Mongrel buffers the Mongrel upload. Merb does not block. CGI.rb is Merb not used. This is why you should care about Merb -- if you need the capacity. Think of it as a custom Mongrel file handler...that you don’t have to write.

Slide 9: Installing Merb sudo gem install mongrel json erubis archive-tar-minitar rspec -y svn co http://svn.devjavu.com/merb/trunk merb && cd merb && rake install Then you can generate a new merb app: merb -g myapp Merb is available as a gem, but it is rather rough right now. I recommend getting the trunk to keep abreast of the latest bug fixes. There is a simple blogging application called MrBlog that will show you how Merb works.

Slide 10: Merb vs Rails Merb uses ActiveRecord, so all your favorite features are there. It’s M/V/C, so development is similar. - generator scripts are not generally available - routing is dierent (simple but functional) - not many view helpers - most configuration in Ruby rather than YAML - In general, rougher around the edges. (Example: multipart form uploads were broken)

Slide 11: Merb + Rails Perhaps more interesting is getting Merb working _with_ your existing Rails app. In about half a days work, I was able to get Merb loading up my ActiveRecord objects from my rails project (to avoid code duplication), and get a Rails AR plugin working. Merb can piggy-back on your Rails sessions as long as you store them in the database.

Slide 12: class Item < ActiveRecord::Base end require DIST_ROOT + '/../../app/models/item.rb'

Slide 13: Many ActiveRecord plugins will work with Merb ...with a little modification. I got Rick Olson’s attachment_fu plugin working with Merb with a few tweaks to the code. Mostly I had to change how files were required, because Rails does a lot of magic to load plugins. In this way, you can use Rails for your views and general app, and pass o file upload POST actions to Merb for LET’S LOOK AT A SHORT DEMO.

Slide 14: Resources Merb Docs: http://merb.rubyforge.org Merb Trac: http://merb.devjavu.com Ezra’s blog: http://brainspl.at/ Erubis: http://www.kuwata-lab.com/erubis