Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

ruby

rack

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?

like image 871
Amit Erandole Avatar asked Mar 10 '11 17:03

Amit Erandole


People also ask

What does Rack Do Ruby?

Rack provides a minimal, modular, and adaptable interface for developing web applications in Ruby. By wrapping HTTP requests and responses in the simplest way possible, it unifies and distills the API for web servers, web frameworks, and software in between (the so-called middleware) into a single method call.

Does Ruby on Rails use Rack?

Rack is used by many Ruby web frameworks and libraries, such as Ruby on Rails and Sinatra. It is available as a Ruby Gem. Many Ruby applications are called "rack-compliant".

Can you make apps with Ruby on Rails?

Rails is a web application development framework written in the Ruby programming language. It is designed to make programming web applications easier by making assumptions about what every developer needs to get started. It allows you to write less code while accomplishing more than many other languages and frameworks.

Is Ruby on Rails a Web server?

Ruby on Rails (simplify as Rails) is a server-side web application framework written in Ruby under the MIT License. Rails is a model–view–controller (MVC) framework, providing default structures for a database, a web service, and web pages.


2 Answers

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
like image 192
Jakub Hampl Avatar answered Nov 16 '22 03:11

Jakub Hampl


You would do well to search for other questions & answers that make sense to you. Try "Getting Started with Rails" or "Ruby Web Development". A lot of different topics on this site have been devoted to this exact subject, so you might save yourself some trouble there...

Ignoring the specifics of your question for a minute, it seems like you want to learn Ruby and build web apps. Before you start delving into Rack or Mongrel or anything else, you should know that there are 2 well established frameworks that help build Ruby web applications. The first is Ruby on Rails, and the other is Sinatra. There are many others, but these are the most well documented on Stack Overflow and the internet in general.

Check out the following links for some background...

  • www.rubyonrails.org
  • SO: building-a-website-best-practice-and-architecture-with-ruby
  • www.railstutorial.org
  • SO: learning-ruby-on-rails

If you still have a burning desire to answer your question - "what is rack?", you should follow the same process, and end up at this Stack Overflow Answer:

What is Rack middleware?

Good luck!

like image 27
Nuby Avatar answered Nov 16 '22 03:11

Nuby