Scripting languages like PHP, Perl and Python may have taken the Web by storm but the lesser-known Ruby has stepped up to overthrow the might of Microsoft's .Net at search portal schoolseek.com.au.
Like the three Ps, Ruby is an open source scripting language that has found a niche in database-driven Web applications, and is a real time-saver according to managing director of Perth-based Web development company Spin Technologies Jordan Brock.
With five production sites running Ruby, Brock is preparing to migrate schoolseek.com.au, from the .Net framework to the open source scripting language.
"With the original site the client asked for additional features and I sat down and looked at site and realized I could rewrite the site in Ruby with the new features for only about five hours more than just adding the changes," Brock said. "Customers appreciate I can get sites done a lot faster and I can quickly add functionality. Now I can build a full shopping cart in the timeframe of a $5,000 site because the technology doesn't limit you or hinder the way you develop."
The new Ruby-based schoolseek.com.au is expected to go live this month.
Brock said one "great" features of Ruby it supports iterative development without interrupting the rest of the site.
Spin Technologies has now developed a calendar application, front-end sites, and a number of company intranets with the Ruby language and its development environment - Ruby on Rails.
From a pure programming perspective, Brock praised Ruby for its power and simplicity.
"It's like you're creating art when you're writing with Ruby - there's something about it that makes me happy," Brock said. "When I go back to C# I feel like crying. With Ruby on Rails there is something about it that makes it feel natural."
Brock said Ruby is as capable as any other scripting language, and because of its simplicity it's easy to dismiss it as "just another scripting language". "There is very little programming constructs it doesn't deal with," he said. "It has all the power of Perl and C# without the downsides."
Although not familiar with Python, Brock said Ruby is "remarkably" simpler than Perl which has a high barrier to entry whereas Ruby flows "logically" and if you have any programming experience "it all makes sense".
"I love PHP in that the way everything was approached is an improvement to ASP [but] Ruby handles OO better than PHP as every last construct in Ruby is an object, whereas in PHP the OO stuff was plugged on top of it," he said, adding Ruby involves a lot less code and is simpler to maintain.
"Ruby doesn't have the acceptance or knowledge base of Java which has had billions of dollars of development done on it," he said. "That's were Java or C# has an advantage but with time Ruby will change this."
Brock believes there is resistance to Ruby in the enterprise space "possibly because of existing systems like Java" but once people "start playing with it" they will speed its acceptance.
"I can't see NAB replacing its entire systems with Ruby but with something like a user help system, if you can build that in one-third the time using Ruby on Rails why wouldn't you?"
"The big thing that got me was the whole database mapping stuff," Brock said. "You need to add a new field? Just do it and it works."
Brock described Ruby's database support as "fantastic" because it connects to MySQL, SQLite, PostgreSQL, Oracle, SQL Server, and DB2. "There are no configuration files other than the one you specify which database to connect to," Brock said.
It's this model that makes Ruby on Rails database agnostic so developers can code once and transport it to any database. In addition to its database independence, Ruby runs on Linux, Mac OS X, Unix and Windows.
Brock's development platform is Mac OS X but he deploys on FreeBSD Unix.
Ruby can also be used to develop desktop applications but Brock said that's not where its strength lies.
"It's best as a Web development language and Ruby will not replace the .Net framework," he said. "I would bet my business on Ruby as it's very reliable and not likely to buckle under load. There are mission critical sites running on Ruby."