<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rochak Chauhan::Unpredictably Exciting &#187; Ruby on Rails</title>
	<atom:link href="http://rochakchauhan.com/blog/category/ruby-on-rails/feed/" rel="self" type="application/rss+xml" />
	<link>http://rochakchauhan.com/blog</link>
	<description>Know your limits, but never stop trying to exceed them.</description>
	<lastBuildDate>Thu, 03 May 2012 11:48:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Why is Ruby on Rails so slow?</title>
		<link>http://rochakchauhan.com/blog/2008/04/22/why-is-ruby-on-rails-so-slow/</link>
		<comments>http://rochakchauhan.com/blog/2008/04/22/why-is-ruby-on-rails-so-slow/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 03:20:58 +0000</pubDate>
		<dc:creator>rochakchauhan</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://rochakchauhan.com/blog/2008/04/22/why-is-ruby-on-rails-so-slow/</guid>
		<description><![CDATA[Tim Bray, the co-creator of XML turned Ruby on Rails enthusiast, has told developers to face up to lingering performance problems in the scripting stack. In a keynote at the Silicon Valley Ruby Conference last week, Bray called Rails &#8220;a big deal, a hot deal&#8221;. And the Sun Microsystems director of web technologies is walking &#8230; <a class="read-excerpt" href="http://rochakchauhan.com/blog/2008/04/22/why-is-ruby-on-rails-so-slow/">Continue reading <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sun.com/aboutsun/media/ceo/bio.jsp?name=Tim%20Bray" target="_blank">Tim Bray</a>, the co-creator of XML turned <a href="http://www.ruby-lang.org/en/" target="_blank">Ruby</a> on <a href="http://www.rubyonrails.org/" target="_blank">Rails</a> enthusiast, has told developers to face up to lingering performance problems in the scripting stack.</p>
<p>In a keynote at the <a href="http://www.sdforum.org/index.cfm?fuseaction=Page.ViewPage&amp;PageID=853" target="_blank">Silicon Valley Ruby Conference</a> last week, Bray called Rails &#8220;a big deal, a hot deal&#8221;. And the Sun Microsystems director of web technologies is walking it likes he talks it: he&#8217;s using a lot of Ruby for his development.</p>
<p id="MidArticleAd"> <script type="text/javascript">  document.write('\x3Cscript src="http://ad.uk.doubleclick.net/adj/reg.developer.4159/code;cta='+cta+';ctb='+ctb+';ctc='+ctc+';sc='+sc+';cid='+cid+';'+RegExCats+GetVCs()+'chl=scripting;pid='+RegId+RegDT+';'+RegKW+'maid='+maid+';test='+test+';pf='+RegPF+';dcove=d;sz=336x280;tile=3;ord=' + rand + '?" type="text/javascript">\x3C\/script>'); </script><script src="http://ad.uk.doubleclick.net/adj/reg.developer.4159/code;cta=;ctb=;ctc=;sc=1;cid=;chl=scripting;pid=77085;kw=xml;kw=ruby;kw=java;kw=php;kw=rails;maid=;test=;pf=0;dcove=d;sz=336x280;tile=3;ord=82886631382204?" type="text/javascript"></script> <noscript></noscript></p>
<p>But&#8230;</p>
<p>&#8220;Let&#8217;s face the facts: Ruby is too slow,&#8221; Bray told delegates. He says Ruby 1.8.6 &#8211; which dominates the enterprise landscape &#8211; is up to 20 times slower than Java.</p>
<p>And, despite tests, the cause of the problem remains unclear &#8211; is it compilation of Ruby or &#8220;some pretty freaking complex and scary stuff&#8221; in Rails.</p>
<p>&#8220;When you start to run Rails, you get wildly non-linear performance. Rails has worked well on Ruby 1.8.6&#8230; everything else is a work in progress. It&#8217;s weird and it&#8217;s hard to understand,&#8221; Bray said.</p>
<p>&#8220;Ruby is richly festooned with core libraries and APIs that aren&#8217;t built in Ruby, they are built in C,&#8221; he said.</p>
<p>Fellow keynote speaker John Lam, a Microsoft project manager who&#8217;s leading work porting Ruby to the .NET Framework with <a href="http://www.ironruby.net/" target="_blank">IronRuby</a>, also noted &#8220;strange anomalies&#8221; in the way Ruby works.</p>
<p>Various initiatives are underway to address the Ruby speed problem. These include the Smalltalk-inspired <a href="http://maulanaruby.wordpress.com/2007/08/01/rubinus-smalltalk-inspired-ruby-vm/" target="_blank">Rubinus</a> that Sun is supporting; the somewhat obscure <a href="http://ruby.gemstone.com/" target="_blank">Maglev</a>; and &#8211; of course &#8211; <a href="http://jruby.codehaus.org/" target="_blank">JRuby</a>. This runs on the Java Virtual Machine and is up to five times faster than Ruby, according to Bray.</p>
<p>In spite of the go slow, Bray delivered a robust endorsement of Ruby on Rails. For him, the Rails framework drives Ruby&#8217;s success and gives Ruby an edge over PHP and Sun&#8217;s beloved Java in speed of development, scalability and maintainability. &#8220;The majority of Ruby in the world is driven by Rails,&#8221; he said.</p>
<p>Rails offers a clean, prescribed and predictable framework that &#8211; like PHP &#8211; get some of their advantage from choosing to do less. Java Enterprise Edition, meanwhile, is designed for &#8220;infinite flexibility&#8221;.</p>
<p>PHP is widespread and is used in massive applications such as Facebook and Wikipedia, but the accompanying PHP <a href="http://phpframeworks.com/index.php5" target="_blank">frameworks</a> such as <a href="http://phpframeworks.com/php-frameworks/index.php?id=2" target="_blank">CakePHP</a>, have not followed in terms of deployment, breeding &#8220;spaghetti code&#8221; that&#8217;s difficult to fix and extend.</p>
<p>According to Bray, the prescriptive nature of the Rails framework suits most web front-ended applications&#8217; database batch needs when it comes to create, repeat, update and delete. The downside? If you need your database calls to do something a little different, you&#8217;re on your own.</p>
<p>Rails also encourages best practices, through the use of <a href="http://c2.com/cgi/wiki?TestDrivenDevelopment" target="_blank">test-driven development</a> to improve construction and <a href="http://ootips.org/mvc-pattern.html" target="_blank">model view controller</a> to help maintain applications.</p>
<p>Speed of development is the number-one reason that CTOs at big banks and airlines are calling Bray in to advise on Ruby. &#8220;They&#8217;ve heard it gives them applications in months rather than years. That&#8217;s why Ruby came out of nowhere,&#8221; he said. &#8220;You can get something done faster in Ruby once you&#8217;ve got it built, you can do updates and maintenance faster than you can in PHP.&#8221;</p>
<p>Other languages could learn a thing or two from Rails and Bray predicts frameworks would become more &#8220;Rails-like&#8221; &#8211; meaning the future does not belong to Ruby on Rails alone.</p>
]]></content:encoded>
			<wfw:commentRss>http://rochakchauhan.com/blog/2008/04/22/why-is-ruby-on-rails-so-slow/feed/</wfw:commentRss>
		<slash:comments>392</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails now with NetBeans</title>
		<link>http://rochakchauhan.com/blog/2008/02/13/ruby-on-rails-now-with-netbeans/</link>
		<comments>http://rochakchauhan.com/blog/2008/02/13/ruby-on-rails-now-with-netbeans/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 07:46:15 +0000</pubDate>
		<dc:creator>rochakchauhan</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[NetBeans]]></category>

		<guid isPermaLink="false">http://rochakchauhan.com/blog/2008/02/13/ruby-on-rails-now-with-netbeans/</guid>
		<description><![CDATA[Having limped along in the wake of Eclipse, Sun Microsystems&#8217; NetBeans is getting its second wind . One thing that&#8217;s helping is a fresh focus on scripting, particularly around Ruby on Rails. In this piece, I shall show how well Ruby on Rails has been integrated into NetBeans using the creation of a very simple &#8230; <a class="read-excerpt" href="http://rochakchauhan.com/blog/2008/02/13/ruby-on-rails-now-with-netbeans/">Continue reading <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Having limped along in the wake of Eclipse, Sun Microsystems&#8217; NetBeans is getting its <a href="http://www.regdeveloper.co.uk/2008/01/31/netbeans_ruby_part_one/">second wind</a> . One thing that&#8217;s helping is a fresh focus on scripting, particularly around Ruby on Rails.</p>
<p>In this piece, I shall show how well Ruby on Rails has been integrated into NetBeans using the creation of a very simple application as an example.</p>
<p id="MidArticleAd"><script type="text/javascript">     document.write(\'\x3Cscript src="http://ad.uk.doubleclick.net/adj/reg.developer.4159/code;\'+RegExCats+GetVCs()+\'chl=scripting;pid=\'+RegId+\';\'+RegKW+\'maid=\'+maid+\';test=\'+test+\';pf=\'+RegPF+\';dcove=d;sz=336x280;tile=3;ord=\' + rand + \'?" type="text/javascript">\x3C\/script>\');</script><script src="http://ad.uk.doubleclick.net/adj/reg.developer.4159/code;vc=print.print;vc=dev.code;chl=scripting;pid=0;maid=;test=;pf=1;dcove=d;sz=336x280;tile=3;ord=96624131490054?" type="text/javascript"></script><noscript></noscript></p>
<p>I&#8217;m going to build a simple link sharing application &#8211; which we&#8217;ll call Linkshare &#8211; along the lines of <a href="http://reddit.com/" target="_blank">Reddit</a> . The functionality is straightforward: users can post interesting links to the site. Links can be displayed, updated and deleted: in others words, perform the most basic of database procedures on these posts.</p>
<p>For our backend database we&#8217;ll use MySQL. So, before we kick off any of the Rails stuff, log on to your database server and create a database called Linkshare. And, for convenience create a user called ls. We&#8217;ll leave the password blank for this tutorial.</p>
<p>We can use NetBeans to connect to this empty database to check that we can connect to the server and to see what state the database is in. Click on the Services tab in NetBeans, expand the Databases tree, right click on Drivers and select the MySQL node, then right click and select Connect Using on the New Connection dialog, enter the database URL and the user name, and hit OK. NetBeans will make the connection, and once it&#8217;s done you can expand the tree still further to view Tables, Views and Procedures (which should be empty).</p>
<p>The next step is to create the Linkshare project. File New starts the new project wizard and clicking on the Ruby category gives us a number of choices, including Ruby on Rails application. Clicking Next allows us to give the project a name &#8211; Linkshare &#8211; and to pick which RDBMS we want to use. When we click on the Finish button, Rails will do its stuff and generate the entire application structure for us.</p>
<p>Once that&#8217;s in place, we need to tell the project how to connect to the database. From the Projects tab expand the Linkshare project, navigate to the Configuration node and then double click on the database.yml file to open it in the editor. Change the development database section so that it matches your connection settings:</p>
<pre>development:   adapter: mysql   database: linkshare   username: ls   password:   host: &lt;your host name or IP address&gt;</pre>
<p>Now, a major part of the Ruby on Rails architecture is an implementation of the Model-View-Controller (MVC) and ActiveRecord design patterns. If you&#8217;re unfamiliar with the terminology don&#8217;t worry, Ruby on Rails makes things simple for you. The model is a fancy way of talking about the database. And we&#8217;ll add to ours by creating a table called links to store all of the links that users are going to post to our site.</p>
<p>Right click on the Linkshare node in Projects, select Generate and from the drop-down menu pick Model. For each link our users enter we want the URL and some description, so for the Arguments field we specify:</p>
<pre>Link url:string description:text</pre>
<p>When we hit OK, Rails does more application generation, including the creation of a script to set up and tear down the database table for us. The file that&#8217;s generated is called 001_create_links.rb, and looks like this:</p>
<pre>class CreateLinks &lt; ActiveRecord::Migration   def self.up     create_table :links do |t|       t.column :url, :string       t.column :description, :text     end   end    def self.down     drop_table :links   end end</pre>
<p>To run this, right click on the Linkshare node again, select Migrate Database &gt; Current Version to connect to the database and create the links table. Once that&#8217;s done, switch to the Services tab, select the Database connection and hit Refresh, click on the Tables node to see that there is indeed a links table, with fields for URL and description (as well as an ID field that was automatically added for us).</p>
<hr class="PageBreak" />Next, we want to wire this up to a web page that allows us to add, edit and delete entries (which we&#8217;ll refer to as posts) to this database. For that we need a Controller. Again, right click Linkshare, select Generate and this time use the drop-down menu to select Controller. Enter a value of Post for the Name field and then OK. This generates a Ruby file called post_controller.rb, which opens in the editor.We add a single line of code to the skeleton so that it looks like this:</p>
<pre>class PostController &lt; ApplicationController   scaffold :link end</pre>
<p>The final thing is to make sure that requests are routed to the correct place, so edit the routes.rb file (which is under the Configuration &gt; Environments node of the Linkshare project tree). Adding the following line should route requests to the post controller:</p>
<pre>map.connect ' ', :controller =&gt; "link"</pre>
<p>With that in place, press F6 (or click on the big green Run Main Project button on the main tool bar) and launch the WEBrick web server with our Ruby on Rails application in place. Opening a browser and entering the URL http://localhost:3000/post will take us to a very basic looking web page that enables us to add, edit, list and delete posts.</p>
<p>Want to do more? Say, we decide to add a tags field so we have an idea what each URL is about. Easy. In the NetBeans Generator, menu select Migration, enter &#8220;new_tags_field&#8221; and then hit OK. This creates a new class called 002_new_tags_field.rb and opens the file in the editor. We&#8217;ll make use of one of NetBeans keyboard triggers to make life simple for us. Enter a new line under def self.up, then enter mcol and then press the tab key. This expands to:</p>
<pre>add_column :table, :column, :string</pre>
<p>Change this to:</p>
<pre>add_column :links, :tags, :string</pre>
<p>Save the change, run the Migrate Database command to add a new tags field to the links table. Hit Refresh in the browser, click on the New Link button and, hey presto, there&#8217;s a tags field as well.</p>
<p>It might not look like much, but we have the skeleton of a useful web application, created in just a few minutes. Enhancing the application with validations, adding new fields or functions (like voting buttons), or adding some better formatting can all be done with a few key strokes or mouse clicks.</p>
<p>It&#8217;s why Ruby on Rails has made such a splash, and shows how well Ruby on Rails has been integrated into NetBeans.</p>
]]></content:encoded>
			<wfw:commentRss>http://rochakchauhan.com/blog/2008/02/13/ruby-on-rails-now-with-netbeans/feed/</wfw:commentRss>
		<slash:comments>342</slash:comments>
		</item>
		<item>
		<title>Microsoft ends Ruby.NET project</title>
		<link>http://rochakchauhan.com/blog/2008/02/06/microsoft-ends-rubynet-project/</link>
		<comments>http://rochakchauhan.com/blog/2008/02/06/microsoft-ends-rubynet-project/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 06:06:21 +0000</pubDate>
		<dc:creator>rochakchauhan</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Tech News]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Ruby.NET]]></category>

		<guid isPermaLink="false">http://rochakchauhan.com/blog/2008/02/06/microsoft-ends-rubynet-project/</guid>
		<description><![CDATA[A community driven project for Ruby source code to run natively on Microsoft&#8217;s .NET framework has shut down, faced by progress from an official Microsoft effort. Rather than repeat the work on Microsoft&#8217;s own IronRuby, Ruby.NET is closing its doors just three months after its latest milestone release, and following an initial wave of developer &#8230; <a class="read-excerpt" href="http://rochakchauhan.com/blog/2008/02/06/microsoft-ends-rubynet-project/">Continue reading <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A community driven project for Ruby source code to run natively on Microsoft&#8217;s .NET framework has shut down, faced by progress from an official Microsoft effort.</p>
<p>Rather than repeat the work on Microsoft&#8217;s own <a href="http://www.ironruby.net/" target="_blank">IronRuby</a>, Ruby.NET is closing its doors just three months after its latest <a href="http://rubydotnet.googlegroups.com/web/Home.htm" target="_blank">milestone release</a>, and following an initial wave of developer buzz,.</p>
<p id="MidArticleAd"><script type="text/javascript">     document.write(\'\x3Cscript src="http://ad.uk.doubleclick.net/adj/reg.developer.4159/code;\'+RegExCats+GetVCs()+\'chl=msdotnet;pid=\'+RegId+\';\'+RegKW+\'maid=\'+maid+\';test=\'+test+\';pf=\'+RegPF+\';dcove=d;sz=336x280;tile=3;ord=\' + rand + \'?" type="text/javascript">\x3C\/script>\');</script><script src="http://ad.uk.doubleclick.net/adj/reg.developer.4159/code;chl=msdotnet;pid=74638;kw=microsoft;kw=ruby;kw=ironruby;kw=ruby.net;kw=.net%20framework;kw=microsoft%20public%20license%20%28ms-pl%29;maid=;test=;pf=0;dcove=d;sz=336x280;tile=3;ord=34919690068960?" type="text/javascript"></script><noscript></noscript></p>
<p>Microsoft, meanwhile, has welcomed Ruby.NET project participants to its IronRuby project, licensed under the Microsoft Public License (Ms-PL).</p>
<p>John Lam, a Microsoft Dynamic Language Runtime (DLR) team programmer, <a href="http://www.iunknown.com/2008/02/welcome-wayne-k.html" target="_blank">said</a> Ruby.NET project leader Wayne Kelly is &#8220;refocusing&#8221; his efforts on IronRuby.</p>
<p>Kelly has moved to head off suggestions Microsoft pressured him to kill Ruby.NET, which initially received funding from Microsoft Research. Ruby.NET lags IronRuby overall, but its <a href="http://plas2003.fit.qut.edu.au/gppg/" target="_blank">parser</a> is being added to Microsoft&#8217;s effort.</p>
<p>Kelly <a href="http://groups.google.com/group/RubyDOTNET/browse_thread/thread/1752830c857620b0" target="_blank">indicated</a> on the Ruby.NET mailing list that Ruby.NET was simply overtaken despite getting a good head start.</p>
<p>Last year&#8217;s release of Microsoft&#8217;s IronRuby had called into question Ruby.NET&#8217;s &#8220;unstated goal&#8221; of heading towards a production-quality version. Kelly got on board with IronRuby following last week&#8217;s Lang.NET Symposium where the projects compared progress. &#8220;I&#8217;ve come to the conclusion that the DLR is clearly here to stay &#8211; it&#8217;s becoming an even more important part of the Microsoft platform,&#8221; Kelly said.</p>
<p>&#8220;Whilst Ruby.NET initially had a good head start on the IronRuby project; by incorporating the Ruby.NET parser and scanner and by leveraging the DLR, I now believe that IronRuby is more likely to succeed as a production-quality implementation of Ruby on the .NET platform,&#8221; Kelly said.</p>
<p>The <a href="http://blogs.msdn.com/hugunin/archive/2007/04/30/a-dynamic-language-runtime-dlr.aspx" target="_blank">DLR</a>, unveiled by Microsoft in May 2007, adds a set of features to the .NET framework&#8217;s Common Language Runtime (CLR) designed to improve the performance of scripting languages on the CLR and to also enable them to share code.</p>
<p>Lam, who joined Microsoft in 2006 having built the RubyCLR for Ruby applications on .NET, welcomed the end of duplicate Ruby efforts. &#8220;More people working in parallel on libraries means that folks will get a working Ruby on .NET that runs real programs sooner. And that&#8217;s goodness for everyone, from the contributors who want to see their code used, to devs who want to write Ruby programs on the .NET,&#8221; he said.</p>
]]></content:encoded>
			<wfw:commentRss>http://rochakchauhan.com/blog/2008/02/06/microsoft-ends-rubynet-project/feed/</wfw:commentRss>
		<slash:comments>412</slash:comments>
		</item>
		<item>
		<title>Uncertainty for Ruby on Rails despite changes</title>
		<link>http://rochakchauhan.com/blog/2008/01/17/uncertainty-for-ruby-and-rails-despite-changes/</link>
		<comments>http://rochakchauhan.com/blog/2008/01/17/uncertainty-for-ruby-and-rails-despite-changes/#comments</comments>
		<pubDate>Thu, 17 Jan 2008 08:00:25 +0000</pubDate>
		<dc:creator>rochakchauhan</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Tech News]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://rochakchauhan.com/blog/2008/01/17/uncertainty-for-ruby-and-rails-despite-changes/</guid>
		<description><![CDATA[The launch of a low-cost Ruby on Rails integrated development environment from SapphireSteel Software based on Microsoft&#8217;s Visual Studio comes at a turning point for both the Ruby language and its associated Rails framework. But quite what the turning point will be is open to question. On the one hand Sun&#8217;s director of web technologies &#8230; <a class="read-excerpt" href="http://rochakchauhan.com/blog/2008/01/17/uncertainty-for-ruby-and-rails-despite-changes/">Continue reading <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The launch of a low-cost Ruby on Rails integrated development environment from <a href="http://www.sapphiresteel.com/">SapphireSteel Software</a> based on Microsoft&#8217;s Visual Studio comes at a turning point for both the <a href="http://www.ruby-lang.org/en/about/">Ruby</a> language and its associated <a href="http://www.rubyonrails.org/">Rails</a> framework. But quite what the turning point will be is open to question.</p>
<p>On the one hand Sun&#8217;s director of web technologies Tim Bray <a href="http://www.tbray.org/ongoing/When/200x/2008/01/03/Prediction-Rails">predicts</a> a healthy future for Ruby and Rails &#8211; while also acknowledging that they could face some stiff competition from alternatives. On the other hand Joe Gregario at BitWorking <a href="http://bitworking.org/news/">maintains</a> that Ruby and Rails peaked in mid 2007 and, citing various Web 2.0 trend statistics, reckons its downhill from now on.</p>
<p id="MidArticleAd"><script type="text/javascript">     document.write(\'\x3Cscript src="http://ad.uk.doubleclick.net/adj/reg.developer.4159/code;\'+RegExCats+GetVCs()+\'chl=scripting;pid=\'+RegId+\';\'+RegKW+\'maid=\'+maid+\';test=\'+test+\';pf=\'+RegPF+\';dcove=d;sz=336x280;tile=3;ord=\' + rand + \'?" type="text/javascript">\x3C\/script>\');</script><script src="http://ad.uk.doubleclick.net/adj/reg.developer.4159/code;chl=scripting;pid=73649;maid=;test=;pf=0;dcove=d;sz=336x280;tile=3;ord=81140306877751?" type="text/javascript"></script><noscript></noscript></p>
<p>The flak attack on the Ruby and Rails communities notched up a level with a vitriolic rant last week from Mongrel creator Zed Shaw who <a href="http://www.zedshaw.com/rants/rails_is_a_ghetto.html">declared</a> Rails a &#8220;ghetto&#8221; populated by &#8211; well, according to Zed at least, some not very nice people. The community <a href="http://developers.slashdot.org/article.pl?sid=08/01/02/1811218">responded</a> at length.</p>
<p>The Ruby cause has not been helped by high-profile failures such as Derek Civers of CD Baby <a href="http://www.regdeveloper.co.uk/2007/09/25/ruby_rails_scripting_project_failure_2_0/">revealing</a> last September that he had abandoned a re-write of his site with Ruby on Rails and gone back to PHP scripting. And earlier in the year Twitter <a href="http://www.texasstartupblog.com/2007/04/12/twitter-blaming-ruby-on-rails-for-failures/">blamed</a> Ruby on Rails for degraded performance on its site.</p>
<p>The main grouses appear to be about performance and the scalability of applications built with Ruby and Rails.</p>
<p>There is some evidence that performance has <a href="http://www.developer.com/services/article.php/3720041">improved</a> with Rails 2.0 released just before Christmas and scalability is clearly no problem if you have God (and Zed Shaw) on your side.</p>
<p>The availability of full versions of Ruby for Microsoft&#8217;s .NET in the form of <a href="http://www.regdeveloper.co.uk/2007/07/24/ironruby_released/">IronRuby</a> from Microsoft and <a href="http://rubydotnet.googlegroups.com/web/Home.htm">Ruby.NET</a>, launched in November 2007, should also help increase uptake of Ruby.</p>
<p>But as Tim Bray notes in his positive forecast for Ruby and Rails, there will be pressure on both during the coming year. Alternatives to Rails such as <a href="http://ramaze.net/">Ramaze</a> clearly <a href="http://antoniocangiano.com/">appeal</a> to developers and there is still strong support for established languages such as PHP and Java</p>
]]></content:encoded>
			<wfw:commentRss>http://rochakchauhan.com/blog/2008/01/17/uncertainty-for-ruby-and-rails-despite-changes/feed/</wfw:commentRss>
		<slash:comments>340</slash:comments>
		</item>
		<item>
		<title>PHP vs Java vs Ruby</title>
		<link>http://rochakchauhan.com/blog/2007/12/14/php-vs-java-vs-ruby/</link>
		<comments>http://rochakchauhan.com/blog/2007/12/14/php-vs-java-vs-ruby/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 12:37:42 +0000</pubDate>
		<dc:creator>rochakchauhan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://rochakchauhan.com/blog/2007/12/14/php-vs-java-vs-ruby/</guid>
		<description><![CDATA[With Sun GPLv2’ing its Java software this week, a lot of focus is on the other open frameworks that have risen during the same era, and their comparative value in a post open source Java world. One such take is from well-known Sun insider, Tim Bray, who spoke at last week’s International PHP Conference in &#8230; <a class="read-excerpt" href="http://rochakchauhan.com/blog/2007/12/14/php-vs-java-vs-ruby/">Continue reading <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>With Sun GPLv2’ing its Java software this week, a lot of focus is on the other open frameworks that have risen during the same era, and their comparative value in a post open source Java world. One such take is from well-known Sun insider, Tim Bray, who spoke at last week’s International PHP Conference in Germany.</p>
<p>Bray, who is Director of Web Technologies at Sun Microsystems, co-creator of the XML 1.0 and XML Namespace standards, co-founder of Open-Text, and contributor to the Atom Publishing standard (whew!) spoke in a presentation entitled “<a href="http://rochakchauhan.com/blog/wp-content/uploads/2007/12/phpde.pdf" title="How to combine PHP technology with Java based on Enterprise Systems">How to combine PHP technology with Java based on Enterprise Systems</a>”</p>
<p>In the slide below, Bray outlines the basic advantages of each of these three platforms (or rather the two languages and one framework if you are scoring at home). In perhaps in a nod to his new employer, Sun, Bray totally omits any mention of .NET or smaller products like Adobe’s Flex/ColdFusion platform.</p>
<p>His idea, if you are able to take it on the surface only, is to rate your priorities of: 1) Scalability, 2) Dev Speed, 3) Dev Tools, and 4) Maintainability. In this highly generalized approach, you could theoretically pick your web application building language/framework based on only these priorities.</p>
<p style="text-align: center"><img src="http://rochakchauhan.com/blog/wp-content/uploads/2007/12/php_java_ruby.png" alt="PHP vs Java vs Ruby" /></p>
<p>Tim weighs-in heavy on the maintainability side, and we’d tend to agree with him. To quote:<br />
“Good apps, once built, tend to be in production for an astonishingly long time. Which means that they have to be maintained for an astonishingly long time. Which means that maintainability is important. There are a lot of things that go into maintainability, but I suggest that the biggies are object-orientation, MVC architecture, code readability, and code size.”</p>
<p>On the maintainability side Tim places Ruby on Rails out front. Quoting him again, Tim describes why RoR is in the lead here.</p>
<p>“Mostly because there’s less code. The fact that Ruby forces MVC on you helps too, also the fact that the templating and [Object Relational Mapping (ORM)] and testing and application code are all so tightly integrated helps. Bear in mind that we still don’t know how well Rails is going to work outside of the CRUD-centered greenfield app space where it shines.”</p>
<p>Tim’s metrics don’t really exist on a quantitative level nor are they based on any published statistics — just a very informed intellect and a privileged position. Obviously, additional parameters such as total cost of ownership and native security (PHP, we are looking at you) should also play a big role the decision making process.</p>
<p>As you can probably guess, in response to this presentation, the proponents of Java, PHP and Ruby are lighting the Internet aflame in defense of their platform of choice and at the same time nay-saying their fellow players. While very entertaining and sometimes educational to follow, not much is going to be gained from this bickering.</p>
<p>Bray concludes the presentation with the Rodney King-esque statement “One way or another we all have to integrate.”</p>
<p>The reality is that there are a great number of ways to hone-in on the language or framework choice for a web application. Many factors have to be considered and weighed against each other. The beauty of what we have today is that there ARE a great many choices out there, much more-so than even a few years ago.</p>
]]></content:encoded>
			<wfw:commentRss>http://rochakchauhan.com/blog/2007/12/14/php-vs-java-vs-ruby/feed/</wfw:commentRss>
		<slash:comments>401</slash:comments>
		</item>
		<item>
		<title>Running Web application with Ruby on Rails</title>
		<link>http://rochakchauhan.com/blog/2007/12/13/running-web-application-with-ruby-on-rails/</link>
		<comments>http://rochakchauhan.com/blog/2007/12/13/running-web-application-with-ruby-on-rails/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 09:48:47 +0000</pubDate>
		<dc:creator>rochakchauhan</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://rochakchauhan.com/blog/2007/12/13/running-web-application-with-ruby-on-rails/</guid>
		<description><![CDATA[Introducing Rails The first thing to understand about Rails is its model/view/controller (MVC) architecture. While this approach is not unique to Rails &#8212; or even to Web applications as opposed to other programs &#8212; Rails provides a very clear and focused MVC way of thinking. If you stray from the MVC approach, Rails becomes far &#8230; <a class="read-excerpt" href="http://rochakchauhan.com/blog/2007/12/13/running-web-application-with-ruby-on-rails/">Continue reading <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>Introducing Rails</strong></p>
<p>The first thing to understand about Rails is its model/view/controller (MVC) architecture. While this approach is not unique to Rails &#8212; or even to Web applications as opposed to other programs &#8212; Rails provides a very clear and focused MVC way of thinking. If you stray from the MVC approach, Rails becomes far less useful than if you follow its paradigm.</p>
<p><strong>The model</strong></p>
<p>The model part of a Rails application is primarily the underlying database it uses. In fact, in many ways a Rails application is just a way to perform manipulations on the data in a relational database management system (RDBMS) in a directed way.</p>
<p>A central component of Rails is the class ActiveRecord, which maps relational tables to Ruby objects and thereby to the data manipulated by controllers and shown in views. Rails applications are particularly likely to use the ubiquitous MySQL database, but bindings exist for a number of other RDBMSs, including IBM® DB2®.</p>
<p>If you like, you can add Ruby code to perform extra validation within an application model, enforce data relationships, or trigger other actions. The Ruby files within an application&#8217;s app/models/ directory can call a variety of validation methods of ActiveRecord. However, you can also leave the model code as a stub as well and rely only on the constraints of the RDBMS that holds the data. For example, the application I develop in this example contains only this skeleton model code (at least initially):</p>
<p>Listing 1. Skeleton model app/models/contact.rb</p>
<p>class Contact &lt; ActiveRecord::Base<br />
end</p>
<p><strong>The controllers</strong></p>
<p>Controllers carry out your application logic in its abstract form. That is, the Ruby scripts in an application&#8217;s app/controllers/ directory will load model data into variables, save it back, and massage and manipulate it. But controllers are not concerned with how the data is concretely presented and entered by users. In the general MVC paradigm, this can allow the user multiple styles of interaction with the same controller: a native GUI, a Web interface, and a speech interface for the visually impaired might all interact with the same controller.</p>
<p>Rails is not quite so general as that, though; instead, it is more narrowly focused on providing and collecting data within Web pages. Nonetheless, you can modify the layout of those Web pages &#8212; colors, fonts, tables, stylesheets, etc. &#8212; independently of controller code.</p>
<p><strong>The views</strong></p>
<p>Rails views are where we leave Ruby code. Rails contains a very nice template language for .rhtml files that combines pure HTML with embedded Ruby code. The very surface appearance of a Rails application screen is generally controlled by CSS stylesheets. The .rhtml format is an enhancement of HTML. Actually, a simple HTML file by itself is also a valid RHTML template, but there is not much point in omitting the scripting control that RHTML gives you.</p>
<p>RHTML is a true template format &#8212; not simply a way of embedding code in HTML &#8212; and this is a much more powerful approach. If you&#8217;re familiar with PHP, think of the contrast between PHP itself and Smarty templates. That is, embedded scripting just intermixes code with uninterpreted HTML; the code portion is still responsible for issuing print statements when it wants to say something to the client.</p>
<p>In contrast, a template engine adds a custom set of tags to HTML that allows you to express conditions, loops, and other logic as part of the enhanced HTML markup.</p>
<p><strong>Generating code</strong></p>
<p>The tools that Rails provides are basically a set of code generators. I like this approach much better than that of a development environment that forces me to use a rigid workspace and IDE. Rails does not get in your way, but nonetheless saves most of the work of manual programming &#8212; or at least eases you into the parts that require manual coding by providing first-pass scaffolding &#8220;for free.&#8221;</p>
<p>The concept of scaffolding is a central notion in Rails. Very simple applications can almost entirely avoid custom coding by letting Rails dynamically generate client HTML pages as it runs. A first pass at code generation creates just the raw scaffolding; you can subsequently generate more specific controllers, views, and models that you can customize. But you need not generate much to get started.</p>
<p>Rails relies on a fixed and fairly common-sense organization of its files, but this organization is relatively rigid. You will just be picking a fight with the Rails environment if you try to force other file and code organizations. Then again, I cannot see a reason not to go along with the organization Rails provides; for the most part, it &#8220;fits your brain&#8221; (as Ruby fans like to say). For example, the directory names and their organization are probably pretty darn close to what you would choose if you were designing a framework from scratch (at least if you think in the &#8220;Ruby way&#8221;).</p>
<p><strong>Building a simple application</strong></p>
<p>Several tutorials are available on the Ruby on Rails Web site that can walk you through creating a simple Rails application (see Resources). The sample application here is like them, since there is a certain way to get started right in building a Rails application. Given the relatively short length of this introduction, I do recommend one of those longer tutorials so you can get a more thorough grounding.</p>
<p>The sample application is a basic address book. It demonstrates the general steps for creating an application:</p>
<ol>
<li>Generate the model (in which you create a MySQL database and table).</li>
<li>Generate the application (includes generating basic code and directories).</li>
<li>Get Rails running (and configure database access).</li>
<li>Create some content (includes generating the scaffold model and controller and telling the controller to use the scaffold).</li>
</ol>
<p>We&#8217;ll look at each step in detail.</p>
<p><strong>Generating the AddressBook model</strong></p>
<p>The first thing you need to do for any application is create a database for its data to live in. Technically, this step need not occur first, but it needs to occur early; it should be obvious that you should create the database before any application code, even automatically generated code. So let&#8217;s create a database in MySQL and craft a first table within this database. (Consult other documentation for how to get MySQL or another RDBMS up and running.)</p>
<p>Let&#8217;s assume MySQL is installed and available.</p>
<p>Listing 2. Creating a MySQL database and table<br />
[~/Sites]$ cat AddressBook.sql<br />
CREATE DATABASE IF NOT EXISTS AddressBook;<br />
USE AddressBook;<br />
CREATE TABLE IF NOT EXISTS contacts (<br />
id smallint(5) unsigned NOT NULL auto_increment,<br />
name varchar(30) NOT NULL default &#8221;,<br />
created_on timestamp(14) NOT NULL,<br />
updated_on timestamp(14) NOT NULL,<br />
PRIMARY KEY (id),<br />
UNIQUE KEY name_key (name)<br />
) TYPE=MyISAM COMMENT=&#8217;List of Contacts&#8217;;<br />
[~/Sites]$ cat AddressBook.sql | mysql<br />
There are a couple things to notice in this first table. Of central importance is that every table must have an id column with exactly that name. Rails uses the primary key column id for various recordkeeping and referencing tasks. The fields created_on and updated_on are not required, but if you do include them, Rails maintains them automatically &#8220;behind the scenes&#8221;; in most cases there is no harm in using these timestamps. So the only &#8220;real&#8221; data you have yet added is a name for your address book contacts.</p>
<p>Another little oddity exists with the Rails&#8217; use of singular and plural names for various things. Various items are renamed between singular and plural versions depending on their usage and context. Table names should use the plural form. I have not experimented with words having irregular plurals; words like datum and data might trip up Rails.</p>
<p>Generating the AddressBook application</p>
<p>Now that you have a database to interact with, create the AddressBook application. The first step is simply running rails to generate the basic directories and scaffold code:</p>
<p>Listing 3. Generating basic code and directories</p>
<p>[~/Sites]$ rails AddressBook<br />
create<br />
create app/apis<br />
create app/controllers<br />
create app/helpers<br />
create app/models<br />
create app/views/layouts<br />
create config/environments<br />
create components<br />
[...]<br />
create public/images<br />
create public/javascripts<br />
create public/stylesheets<br />
create script<br />
[...]<br />
create README<br />
create script/generate<br />
create script/server<br />
[...]</p>
<p>I have abridged the output from running rails; the omitted lines just remind you of various files and directories that were created. Try it on your system and browse through all the created files. I&#8217;ve displayed a few of the most important files and directories in the code.<br />
<strong><br />
Running Rails</strong></p>
<p>Having created the AddressBook/ directory and needed children, you need to perform just a bare initial configuration. First, set the database by modifying a YAML configuration file like so:</p>
<p>Listing 4. Configure database access</p>
<p>[~/Sites]$ cd AddressBook<br />
[~/Sites/AddressBook]$ head -6 config/database.yml # after editing<br />
development:<br />
adapter: mysql<br />
database: AddressBook<br />
host: localhost<br />
username: some_user<br />
password: password_if_needed</p>
<p>Finally, you need to serve the data. Rails comes with its own single-function Web server, WEBrick, which is perfectly good for our experiment. You might also follow instructions at the Ruby on Rails Web site to configure Apache or other servers to serve Rails applications via FCGI (or plain CGI, but plain CGI will be slow).</p>
<p>Listing 5. Kicking over the WEBrick server</p>
<p>[~/Sites/AddressBook]$ ruby script/server -d<br />
=&gt; Rails application started on http://0.0.0.0:3000<br />
[2005-03-21 17:57:38] INFO WEBrick 1.3.1<br />
[2005-03-21 17:57:38] INFO ruby 1.8.2 (2004-12-25) [powerpc-darwin7.8.0]</p>
<p><strong>Creating a little content</strong></p>
<p>The prior steps are enough to let you view a welcome splash page on the WEBrick port. For example, on my local system, I can now view http://gnosis-powerbook.local:3000/. But you need to generate just a bit more code to manipulate your custom database. You can do this with the script generate, which was created within your AddressBook/ application directory:</p>
<p>Listing 6. Code generation of scaffold model and controller</p>
<p>[~/Sites/AddressBook]$ ruby script/generate model contact<br />
exists app/models/<br />
exists test/unit/<br />
exists test/fixtures/<br />
create app/models/contact.rb<br />
create test/unit/contact_test.rb<br />
create test/fixtures/contacts.yml<br />
[~/Sites/AddressBook]$ ruby script/generate controller contact<br />
exists app/controllers/<br />
exists app/helpers/<br />
create app/views/contact<br />
exists test/functional/<br />
create app/controllers/contact_controller.rb<br />
create test/functional/contact_controller_test.rb<br />
create app/helpers/contact_helper.rb</p>
<p>Notice here that you should use the singular contact rather than the plural contacts in the corresponding table name.</p>
<p>Now you need to edit one more generated file, just a bit, to get the controller to use the scaffold:</p>
<p>Listing 7. Telling the controller to use the scaffold</p>
<p>[~/Sites/AddressBook]$ cat app/controllers/contact_controller.rb<br />
class ContactController &lt; ApplicationController<br />
model :contact<br />
scaffold :contact<br />
end</p>
<p>Now you can view and modify the contents of your database at a URL like http://rails.server/contact/ (in my test case, it&#8217;s http://gnosis-powerbook.local:3000/contact/). After entering a little data, it looks something like Figure 1 and Figure 2:</p>
<p>Figure 1. Listing contacts<br />
Listing contacts</p>
<p>Figure 2. Editing contact<br />
Editing contact</p>
<p><strong>Creating customizable content</strong></p>
<p>The previous code creates a fully working interface to view and modify your database, but all the formatting, presentation, and business logic (such as there is) are done dynamically by Rails without any great sophistication. In order to create something a bit more custom, you need to generate a bit more code. What we need now is for Rails to explicitly write out all the scaffolding it is implicitly generating on the fly so that we can tinker with it.</p>
<p>Listing 8. Code generation of explicit controller and view</p>
<p>[~/Sites/AddressBook]$ ruby script/generate scaffold Contact<br />
dependency model<br />
[...]<br />
create app/views/contacts<br />
exists test/functional/<br />
create app/controllers/contacts_controller.rb<br />
create test/functional/contacts_controller_test.rb<br />
create app/helpers/contacts_helper.rb<br />
create app/views/layouts/contacts.rhtml<br />
create public/stylesheets/scaffold.css<br />
create app/views/contacts/list.rhtml<br />
create app/views/contacts/show.rhtml<br />
create app/views/contacts/new.rhtml<br />
create app/views/contacts/edit.rhtml</p>
<p>Now there&#8217;s a bit more to work with, so try modifying a few things. (Notice that this code has gone back to the plural form contacts, for reasons not clear to me; we need to accept it for now.) Try changing a few colors and fonts in the CSS:</p>
<p>Listing 9. Configuring the cascading stylesheets</p>
<p>[~/Sites/AddressBook]$ head -8 public/stylesheets/scaffold.css<br />
body { background-color: #ffe; color: #338; }<br />
body, p, ol, ul, td {<br />
font-family: verdana, arial, helvetica, sans-serif;<br />
font-size: 13px;<br />
}<br />
td { border: 1px solid; }<br />
a { color: #eef; background-color: #446; }<br />
a:hover { color: #fff; background-color:#000; }</p>
<p>Now that you have the code, what does contacts_controller.rb do? It is more explicit and configurable in its action than the contact_controller.rb you saw in the previous code. In part, the controller looks like this:</p>
<p>Listing 10. Controller app/controllers/contacts_controller.rb</p>
<p>class ContactsController &lt; ApplicationController<br />
def list<br />
@contacts = Contact.find_all<br />
end<br />
def show<br />
@contact = Contact.find(@params['id'])<br />
end<br />
def create<br />
@contact = Contact.new(@params['contact'])<br />
if @contact.save<br />
flash['notice'] = &#8216;Contact was successfully created.&#8217;<br />
redirect_to :action =&gt; &#8216;list&#8217;<br />
else<br />
render_action &#8216;new&#8217;<br />
end<br />
end</p>
<p>As promised, a controller&#8217;s main job is to load data into variables. The object Contact is the ActiveRecord object-relational mapping that the model provides. The variables @contacts or @contact are given data in their appropriate methods. The methods are themselves referred to by URLs such as http://rails.server/contacts/show/2 (this one shows the contact with id of &#8220;2&#8243;).</p>
<p>The controller in this example ultimately connects to views, RHTML files that make use of the data values loaded into variables by the controller. For example, here&#8217;s part of the list view:</p>
<p>Listing 11. List view app/views/contacts/list.rhtml</p>
<p>[...]<br />
&lt;% for contact in @contacts %&gt;<br />
&lt;tr&gt;<br />
&lt;% for column in Contact.content_columns %&gt;<br />
&lt;td&gt;&lt;%=h contact.send(column.name) %&gt;&lt;/td&gt;<br />
&lt;% end %&gt;<br />
&lt;td&gt;&lt;%= link_to &#8216;Show&#8217;, :action =&gt; &#8216;show&#8217;, :id =&gt; contact.id %&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;%= link_to &#8216;Edit&#8217;, :action =&gt; &#8216;edit&#8217;, :id =&gt; contact.id %&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;%= link_to &#8216;Destroy&#8217;, :action =&gt; &#8216;destroy&#8217;, :id =&gt; contact.id %&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;% end %&gt;<br />
[...]</p>
<p>The method ContactsController.list loads the variable @contacts, and the flow control tags in RHTML pull out the individual records from the array.</p>
<p><strong>Changing the model</strong></p>
<p>The initial model contained only a name for a contact. Unfortunately, I don&#8217;t have room in this article to expand the model to include actual contact data like phone numbers, addresses, emails, etc. In general, that data would live in a child table with a foreign key relation to the table contacts. The Rails model would indicate the relation with custom code something like this:</p>
<p>Listing 12. Custom code app\models\phone.rb</p>
<p>class Phone &lt; ActiveRecord::Base<br />
belongs_to :contact<br />
end</p>
<p>Before wrapping up, let&#8217;s change the data model just slightly and see how that affects the application. First, add a column:</p>
<p>Listing 13. Adding first_met date to model</p>
<p>$ cat add-contact-date.sql<br />
USE AddressBook;<br />
ALTER TABLE contacts ADD first_met date;<br />
$ cat add-contact-date.sql | mysql</p>
<p>Now that you&#8217;ve changed the underlying model, http://rails.server/contact/ &#8212; the behind-the-scenes version of the scaffolding &#8212; simply adjusts with no effort on your part. The controller and view are fully automated based on the model. But the application version at http://rails.server/contacts/ with our hand-tweaked files is not quite as automatic.</p>
<p>The list view automatically looks for all the columns, whatever they might be, by including Contact.content_columns as part of the template loop. But other views such as edit have already been generated, and you need to add your new data fields. For example:</p>
<p>Listing 14. Edit view app/views/contacts/edit.rhtml</p>
<p>&lt;h1&gt;Editing contact&lt;/h1&gt;<br />
&lt;%= error_messages_for &#8216;contact&#8217; %&gt;<br />
&lt;%= start_form_tag :action =&gt; &#8216;update&#8217; %&gt;<br />
&lt;%= hidden_field &#8216;contact&#8217;, &#8216;id&#8217; %&gt;<br />
&lt;p&gt;&lt;label for=&#8221;contact_name&#8221;&gt;Name&lt;/label&gt;&lt;br/&gt;<br />
&lt;%= text_field &#8216;contact&#8217;, &#8216;name&#8217; %&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;label for=&#8221;first_met&#8221;&gt;Known Since&lt;/label&gt;&lt;br/&gt;<br />
&lt;%= date_select &#8220;contact&#8221;, &#8220;first_met&#8221;, :use_month_numbers =&gt; false %&gt;&lt;/p&gt;<br />
&lt;input type=&#8221;submit&#8221; value=&#8221;Update&#8221; /&gt;<br />
&lt;%= end_form_tag %&gt;<br />
&lt;%= link_to &#8216;Show&#8217;, :action =&gt; &#8216;show&#8217;, :id =&gt; @contact.id %&gt; |<br />
&lt;%= link_to &#8216;Back&#8217;, :action =&gt; &#8216;list&#8217; %&gt;</p>
<p><strong>Conclusion</strong></p>
<p>Rails gives you an extremely quick way to develop flexible Web applications; this introduction just barely touched on what it&#8217;s like to work with Rails. The full framework contains many useful classes and methods for carrying out the actions most used in Web-based applications.</p>
<p>The best thing about Rails is that it fosters a whole &#8220;Rails way of thinking,&#8221; since it comes complete with all the supporting code you need. This is a big plus over other toolkits and frameworks that just give raw materials to work with. Rails development offers you a clear path from a half-formed idea to a fully functioning Web application.</p>
]]></content:encoded>
			<wfw:commentRss>http://rochakchauhan.com/blog/2007/12/13/running-web-application-with-ruby-on-rails/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
