what is rails? Newbie question.

I went through the documents and tutorials and they are all good to know how to create web apps using rails.

I would like to understand the fundamental concept about Rails. I understand using rails you can create a web page very fast and how to use them . But I would like to know what makes Rails? If I have linux box, can I host rails? what are the things I need to install, how a request get processed on a web server for a rails page?

I would like to understand what happens when the client hits a web page, how the request flows to the server and how the server knows what to execute etc.,

I really like the rails but before I go in detail, I want to know more about the fundaments. Please direct me some url or some document which explains these things, thanks.

That's a lot of ground to cover with one question.

For a background in the major design pattern behind Rails, it's important that you understand Model-View-Controller [MVC].

Yes, you can host a Rails app on Linux. A common, and solid, setup is to use Apache 2.2 + mongrel + mongrel_cluster with either MySQL or PostgreSQL on the backend.

http://mongrel.rubyforge.org/

http://blog.codahale.com/2006/06/19/time-for-a-grown-up-server-rails-mongrel-apache-capistrano-and-you/

This is only when you're ready to deploy a production-quality application though. If you just want to get something running to play with, all you need is Rails. Installing mongrel is trivial so you might as well do that too. Keep it simple to start with until you have a working application.

And while it might sound trite, I have to say "use Google" for a lot of the newbie questions you might have about Apache, mongrel, Rails, etc. Everything you can imagine has been asked and answered 1000 times already. If you're willing to read documentation, you'll end up with a nice set-up.

-- James

Thanks James. Yes I am aware of MVC pattern and I use it a lot so that was easy to understand. Only thing I wanted to understand is, if I a linux box with PHP and MySql support, can I install rails and make rails run in parallel to PHP application. Again thanks. Now that I have some links the ones you put up, I will start the reading.

I would like to understand the fundamental concept about Rails. I understand using rails you can create a web page very fast and how to use them . But I would like to know what makes Rails? If I have linux box, can I host rails?

Linux was always preferred for hosting stuff made with open source, cross-platform languages like PHP, Python, Perl, Ruby ... So yeah, of course you can host Rails on a Linux box. Most of the people do it!

what are the things I need to install

Ruby, rubgems, Rails and database adapters (through gems), Apache/ Lighthttpd/Nginx with FastCGI or reverse proxy to Mongrel clusters. There are many good deployment articles: http://del.icio.us/mislav/rails+deployment

All of them describe exactly what to install.

I would like to understand what happens when the client hits a web page, how the request flows to the server and how the server knows what to execute etc.

Want to poke at the internals, eh? Here you go (roughly): http://www.gliffy.com/publish/1008976/

- Mislav

The first thing that you need to understand here, and I struggled with this division for a while was what was Ruby and what was Rails.

So: Ruby is an object orientated scripting language. In this case you mentioned PHP, PHP is also a scripting language.

Rails is a framework that is created using the Ruby language, there are also PHP frameworks out there, again made in PHP. All those gems that are installed when you install Rails.... They are all pure ruby and the make up the Rails framework, you add to the framework by adding new gems and including them in your project..... Niiece huh.

But under it all, what is Rails....? It's Ruby, and can you run more than one language on your computer at once.....??? Of course you can, you should have no problems at all running PHP and Ruby/RubyOnRails on one machine( I'm doing it on this machine right now ), I also run, Erlang, Python, Java etc etc, the list goes on.

Hope this helps, Cam

Thank you very much and it is exactly what I am looking for. If you have time for one more question. I know how exactly IIS work to pharse an asp or asp.net page. Is there a document or link explaining how the same thing is done for Rails?

Mislav already answered the flow in his link http://www.gliffy.com/publish/1008976/

Thanks Mislav

Also check out Obie's upcoming book The Rails Way. It's not published yet, but it's available in RoughCut form from O'reilly, and it goes into more of the gory details you sound interested in.

Thanks.