This article is intended for all those people that want to start developing Ruby on Rails applications with RubyStack. Now that InstantRails project is no longer maintained, RubyStack is the simplest way to start developing Rails applications. So we decided to write this article to guide you through all the needed steps to develop a web application just in minutes. It takes some parts from the already existent tutorial for InstantRails Rolling with Ruby on [Instant]Rails. We hope you enjoy and do not hesitate to give us your feedback in our Forums .
Ruby is a pure object-oriented programming language with a super-clean syntax that makes programming elegant and fun. Ruby successfully combines Smalltalk's conceptual elegance, Python's ease of use and learning, and Perl's pragmatism. Ruby originated in Japan in the early 1990s. It has become popular worldwide in the past few years as more English-language books and documentation have become available (and its popularity has really taken off since the introduction of Rails!).
Rails is an open source Ruby framework for developing web-based,
database-driven applications. What's special about that? There are dozens of
frameworks out there, and most of them have been around much longer than
Rails. Why should you care about yet another framework?
What would you think if I told you that you can develop a web application at least ten times faster with Rails than you can with a typical Java framework? You can, without making any sacrifices in the quality of your application! How is this possible?
Part of the answer lies in the Ruby programming language. Rails takes full advantage of Ruby. The rest of the answer is in two of Rails' guiding principles: less software and convention over configuration .
Less software means you write fewer lines of code to implement your application. Keeping your code small means faster development and fewer bugs, which makes your code easier to understand, maintain, and enhance. Very shortly, you will see how Rails cuts your code burden.
Convention over configuration means an end to verbose XML configuration files--there aren't any in Rails! Instead of configuration files, a Rails application uses a few simple programming conventions that allow it to figure out everything through reflection and discovery. Your application code and your running database already contain everything that Rails needs to know!
For developing a complete Rails web application you need to have properly
installed and configured at least Ruby interpreter, the RubyGems package
manager for Ruby, the Rails gem and a MySQL server. That sounds
complicated... Well, it is. But don't worry because
RubyStack will do all this work for you and
will install some bonus additions too.
The Bitnami RubyStack is an installer that greatly simplifies the installation of Ruby on Rails and its runtime dependencies. It includes ready-to-run versions of Ruby, Rails, MySQL and Subversion. RubyStack is distributed for free under the Apache 2.0 license.
Now that we have RubyStack installed, the next step when developing a Rails application is to create an empty one with the command "rails" and configuring it by writing its "config/database.yml" configuration file. Once again RubyStack has done all this work for as and has created and configured a new rails application with default location at "C:\Program Files\Bitnami RubyStack\projects\rubystack". For detailed instructions about how to install and configure a new application you can go to our tutorial From InstantRails to RubyStack.
We are going to do the most of the work from an "Use Ruby" command line. If you go to "Start -> All Programs -> Bitnami RubyStack -> Use Ruby" you will see a command line window like this:
From there you can run commands like "ruby", "mysql", "svn", etc. Let's move
to our application's directory and launch the web server:
And you will see how the web server Mongrel starts to listen at "http://localhost:3000":
If you receive an error that says "Bad file descriptor - bind(2)" probably
another server has already taken port 3000. Just launch our server in another
ruby script/server -p 3001
Once the server is running (we are going to assume that it is in port 3000), you can point your browser to http://localhost:3000/ and see the welcome page.
Minimize the server window and open a new "Use Ruby" console, and move to the "projects\rubystack" directory again to keep working.
Suppose that we are going to make a web application that will keep track of
all the music CDs we have, we will just need to store the album's name, and
Rails uses the MVC pattern, to illustrate how models work in Rails, we are going to generate one model called Album. To create a model which is going to be stored into the database you first need to create its corresponding table. In Rails, that is done through "migrations". Let's do it . Just run the following command:
ruby script/generate model album
And you should see the output:
C:\Program Files\Bitnami RubyStack\projects\rubystack>ruby script\generate model album
As you can see, Rails has generated a migration file for us:
edit it and fill it with
the following content:
class CreateAlbums < ActiveRecord::Migration
create_table :albums do |t|
t.column :name, :string
t.column :artist, :string
And from the "Use Ruby" console run:
C:\Program Files\Bitnami RubyStack\projects\rubystack>rake db:migrate
(in C:/Program Files/Bitnami RubyStack/projects/rubystack)
== CreateAlbums: migrating ====================================================
== CreateAlbums: migrated (0.0200s) ===========================================
With that, rails has created the corresponding tables in our MySQL database. Now we need a way to read and write to that table, we need a Controller. And we need to provide an user interface for that Controller, we need a View. Fortunately Rails provide an automatic way (called scaffolding) of generating that stuff based in the table structure:
C:\Program Files\Bitnami RubyStack\projects\rubystack>ruby script/generate scaffold album manage_albums
With a single command Rails has created a whole controller "app/controllers/manage_albums_controller.rb" with its six actions (new, show, edit, list, destroy and create) and their respective views under "app/views/manage_albums". Finally, you can see the results, just poit your browser to http://localhost:3000/manage_albums and enjoy adding some CDs to the database.