Search code examples
rubyrack

What is rack? can I use it build web apps with Ruby?


ruby newbie alert! (hey that rhymes :))

I have read the official definition but still come up empty handed. What exactly is it when they say middleware? Is the purpose using ruby with https?

the smallish tutorial at patnaik's blog makes things clearer but how do I do something with it on localhost? I have ruby 1.9.2 installed along with rack gem and mongrel server.

Do I start mongrel first? How?


Solution

  • Just to add a simplistic explanation of Rack (as I feel that is missing):

    Rack is basically a way in which a web app can communicate with a web server. The communication goes like this:

    1. The web server tells the app about the environment - this contains mainly what the user sent in as his request - the url, the headers, whether it's a GET or a POST, etc.
    2. The web app responds with three things:
      • the status code which will be something like 200 when everything went OK and above 400 when something went wrong.
      • the headers which is information web browsers can use like information on how long to hold on to the webpage in their cache and other stuff.
      • the body which is the actual webpage you see in the browser.

    These two steps more or less can define the whole process by which web apps work.

    So a very simple Rack app could look like this:

    class MyApp
      def call(environment) # this method has to be named call
        [200, # the status code
         {"Content-Type" => "text/plain", "Content-length" => "11" }, # headers
         ["Hello world"]] # the body
      end
    end
    
    # presuming you have rack & webrick
    if $0 == __FILE__
      require 'rack'
      Rack::Handler::WEBrick.run MyApp.new
    end