"New Features in Rails 3"

We’re all about following the newest technology in web development. Rails 3 is coming soon, and it promises to be a significant upgrade. With the 4th beta version pushed recently, and a release candidate right around the corner, I thought now would be a good time to go over my two favorite new features.

All New Router

The router has been completely re-written and borrows heavily from the Merb router, but has a more developed DSL.

Regular Routes

Regular routes are more concise, but I’m not sure how I feel about the “controller#action” syntax yet…

<script src=”http://gist.github.com/448079.js?file=gistfile1.builder”></script&gt;

Named Routes

Very similar to regular routes, just with an extra :as variable at the end.

<script src=”http://gist.github.com/448079.js?file=gistfile2.builder”></script&gt;

Restful Routes

I think restful routes get the biggest improvement. The new syntax is MUCH easier to read than in Rails 2.

<script src=”http://gist.github.com/448079.js?file=gistfile3.builder”></script&gt;

ActiveRecord and ActiveRelation

This is probably my favorite addition to Rails. The new ActiveRecord syntax is very similar to Doctrine (which we use with symfony). Instead of passing options as a hash to your find() method, they’ve created a bunch of new methods you can chain together.
<script src=”http://gist.github.com/448079.js?file=gistfile4.builder”></script&gt;

The best part is that any of the query methods just return a relation instead of running the sql query. That way, you can chain more query methods on the relation later. The actual query doesn’t run until you try to access the object(s) (such as with an iterator). This makes fragment caching a lot easier, because you can keep your query call in your action. Even if the cache is hit, it will only create a relation and not actually query the database. You can also force the query to be run at any time by calling all(), first(), or last() on the relation.

"New Features in Rails 3"

“Difference Between Gem and Plugin “

Now a days many developers are developing web application using ruby on rails. But a few of them know what actually the difference between “Gem” and “Plugin”.

Here are some of them


1. Gem is a packaged ruby application using the packaging system defined by RubyGems.

2. Rails itself is a Gem

3. We can install,upgrade and query the gem version.

4. Gem installed for Ruby interpreter can be used system-wide by that interpreter.


1. Plugin is an extension of Rails Framework.

2. Can not be upgraded by using a command. To upgrade one have to uninstall and then install upgraded version.

3. Has to be hooked into rails application. (has to have init.rb)

4. Have an install.rb file.

5. Can only be used application wide.

“Difference Between Gem and Plugin “

"How to find – Size of a directory & Free disk space"

This article explains 2 simple commands that most people want to know when they start using Linux. They are finding the size of a directory and finding the amount of free disk space that exists on your machine. The command you would use to find the directory size is ‘ du ‘. And to find the free disk space you could use ‘ df ‘.

All the information present in this article is available in the man pages for du and df. In case you get bored reading the man pages and you want to get your work done quickly, then this article is for you.

‘du’ – Finding the size of a directory

$ du

Typing the above at the prompt gives you a list of directories that exist in the current directory along with their sizes. The last line of the output gives you the total size of the current directory including its subdirectories. The size given includes the sizes of the files and the directories that exist in the current directory as well as all of its subdirectories. Note that by default the sizes given are in kilobytes.

$ du /home/david

The above command would give you the directory size of the directory /home/david

$ du -h

This command gives you a better output than the default one. The option ‘-h’ stands for human readable format. So the sizes of the files / directories are this time suffixed with a ‘k’ if its kilobytes and ‘M’ if its Megabytes and ‘G’ if its Gigabytes. 

$ du -ah

This command would display in its output, not only the directories but also all the files that are present in the current directory. Note that ‘du’ always counts all files and directories while giving the final size in the last line. But the ‘-a’ displays the filenames along with the directory names in the output. ‘-h’ is once again human readable format.

$ du -c

This gives you a grand total as the last line of the output. So if your directory occupies 30MB the last 2 lines of the output would be

30M .

30M total

The first line would be the default last line of the ‘du’ output indicating the total size of the directory and another line displaying the same size, followed by the string ‘total‘. This is helpful in case you this command along with the grep command to only display the final total size of a directory as shown below.

$ du -ch | grep total

This would have only one line in its output that displays the total size of the current directory including all the subdirectories.

Note : In case you are not familiar with pipes (which makes the above command possible) refer toArticle No. 24 . Also grep is one of the most important commands in Unix. Refer to Article No. 25 to know more about grep.

$ du -s

This displays a summary of the directory size. It is the simplest way to know the total size of the current directory.

$ du -S

This would display the size of the current directory excluding the size of the subdirectories that exist within that directory. So it basically shows you the total size of all the files that exist in the current directory.

$ du –exculde=mp3

The above command would display the size of the current directory along with all its subdirectories,but it would exclude all the files having the given pattern present in their filenames. Thus in the above case if there happens to be any mp3 files within the current directory or any of its subdirectories, their size would not be included while calculating the total directory size.

‘df’ – finding the disk free space / disk usage

$ df

Typing the above, outputs a table consisting of 6 columns. All the columns are very easy to understand. Remember that the ‘Size’, ‘Used’ and ‘Avail’ columns use kilobytes as the unit. The ‘Use%’ column shows the usage as a percentage which is also very useful.

$ df -h

Displays the same output as the previous command but the ‘-h’ indicates human readable format. Hence instead of kilobytes as the unit the output would have ‘M’ for Megabytes and ‘G’ for Gigabytes.

Most of the users don’t use the other parameters that can be passed to ‘df’. So I shall not be discussing them.

I shall in turn show you an example that I use on my machine. I have actually stored this as a script named ‘usage‘ since I use it often.

Example :

I have my Linux installed on /dev/hda1 and I have mounted my Windows partitions as well (by default every time Linux boots). So ‘df’ by default shows me the disk usage of my Linux as well as Windows partitions. And I am only interested in the disk usage of the Linux partitions. This is what I use :

$ df -h | grep /dev/hda1 | cut -c 41-43

This command displays the following on my machine


Basically this command makes ‘df’ display the disk usages of all the partitions and then extracts the lines with /dev/hda1 since I am only interested in that. Then it cuts the characters from the 41st to the 43rd column since they are the columns that display the usage in % , which is what I want.

"How to find – Size of a directory & Free disk space"