DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations
The Latest "Software Integration: The Intersection of APIs, Microservices, and Cloud-Based Systems" Trend Report
Get the report
  1. DZone
  2. Data Engineering
  3. Databases
  4. Web Development Frameworks – Part 3 : Ruby on Rails

Web Development Frameworks – Part 3 : Ruby on Rails

Ricardo Zuasti user avatar by
Ricardo Zuasti
·
Jun. 14, 12 · Interview
Like (0)
Save
Tweet
Share
5.04K Views

Join the DZone community and get the full member experience.

Join For Free

The next runner up in my web development frameworks evaluation series is Ruby on Rails v3.

Unless you have been living under a bucket without an RJ45 port (yes, some buckets have Internet access), you have probably heard of Ruby on Rails (RoR), it’s a very popular framework with lots of momentum. RoR started as an extract of the Basecamp product at 37signals and is now used in all sorts of web apps.

I used RoR 3.2 on a Fedora 16 based workstation for this review. All the base documentation was taken from the official RoR site. Anyway, let’s get on with it.

Install the framework in a development workstation

Two basic steps and you are good to go:

  1. Install ruby and rubygems (using yum, apt-get or just download them from the RoR site)
  2. Install rails using gems (# gem install rails)

On a sidenote, I had to install a few dependencies I was missing (ie. sqlite-devel) that were not tagged as dependencies for either ruby or rubygem, but without them the rails command fails.

Setup a development environment using a free IDE, application server and database

You don’t really need much more than a good text editor for RoR, I’m using the Sublime Text 2 editor (which is very nice to use and has nicel Ruby coloring/autocomplete).

Develop the “Hello world” or similar sample outlined by the frameworks tutorial

To create my “Hello world” I followed the official getting started guide. I had a few minor issues getting my first app working, probably because of the noob component.

Following the steps outlined in the RoR homepage to get the first project working generated an error (that I needed a Javascript engine installed).

Using the link given by the error, I decided to install the therubyracer engine, which in turn failed to install because I didn’t have a C++ compatible compiler; so going back to dear old yum I installed the gcc-c++ package and the Javascript engine finally accepted my PC.

But this was not the end, the rails server command still failed, complaining that I didn’t have a Javascript engine (wasn’t this a developer friendly framework? :P). After a few web searches I found a post about this issue and voila! http://localhost:3000 rendered the start page for my sparkling new RoR app.

Going from the “vanilla” project to a “Hello RoR!” status was quite easy, just one command line to generate my first controller and view, edit the view file and set the new default route in the routes.rb file.

Note that there is an error in the tutorial if you use the latest Rails version, when you add the tags support to the Post model you need to add the :tags_attribute variable to the attr_accesible line or you will get a security error (apparently this was optional before, but now it’s mandatory).

Modify the sample app to perform a specific database query over a custom structure and display the results

Active Record, the default ORM library provided by Rails is quite powerful and easy to use. You can perform all the stuff you would expect using the provided Ruby API, and you can resort to your custom SQL commands if you want/need to.

Adding a custom SQL query to the tutorial sample was really easy, even more if the result maps to an already existing model entity.

Add a dependency to a third party library and perform a computation using it in our app

Using RugyGems as the backbone of the dependency management makes using third party libraries in Rails quite simple. The community is huge and very active, just out of curiosity I did a $ gem query –remote | wc -l and got almost 39.000 items listed.

Develop a “Hello world” REST service

The REST concept is core to Rails, so you don’t really need to do anything special to support the HTTP verbs. Formatting your output as JSON is also a built-in feature of the framework.

Anyway, developing a new REST based web service is just a matter of minutes.

Consume our own service from our app

You can use Active Resource to map RESTful resources to Rails models and then use them as any other model, it’s really cool :)

There are also other options, like straight HTTP fetching using the facilities Ruby provides or some specific gems like HTTParty.

Evaluation

Learning curve: GOOD

Learning RoR falls definetively on the easy side, if you already know Ruby and have a working knowledge of web development it’s a piece of cake. In my case, I had no clue about Ruby but found it similar enough to other languages I have worked with, so I felt right at home in a few hours.

Development performance for simple tasks: GOOD

If you consider all the work the generators do for you, add the thousands of Gems already available and finish it off with the really heavy use of convention over configuration that the framework promotes, you will agree that developing normal stuff is fast, and I mean Speedy Gonzales fast.

Development performance for complex/singular tasks: GOOD

Rails provides some help by not getting too much in the way when you want to develop something the framework doesn’t really foresees. So it basically falls to Ruby itself, and I found it complete enough to say you will probably manage to solve your business/domain specific problems with the same level of complexity and frustration you would find in most other broadly used languages/frameworks.

Dependency management: MEDIUM

The Gems and plugins support is good enough, it provides the things you need to keep your project under control and use external libraries. It does not provide all the features and customization tools like Maven do, but it probably fits most projects needs.

Code performance/security tuning capabilities: MEDIUM

I probably lack enough experience to pass judgment on this point, from my initial review and the apps I coded it seems RoR does a lot for you but it’s not that easy to get into it’s guts to fine tune it for security and performance, specially for mission critical and/or enterprise class applications. But I will probably review this statement after I deploy a few RoR apps myself in the real world with a considerable load.

Platform escalation/redundancy capabilities: MEDIUM

I will get a few insults for this, but being a scripted language that doesn’t run inside a controlled memory managed VM makes Ruby and therefore Rails an inferior contender for really big deployments compared to Java or .NET. I’m not saying you can’t deploy big RoR apps that serve thousands of users, I know there are real world examples of this, I just think that for the average IT crew it’s easier to control the scalation of a Java based app than a Rails one.

Acceptance in corporate markets: BAD

This is pure perception, but at least amongst my company’s customers Ruby isn’t even on the map. You tell them the next software you will provide will run under Ruby and the best thing you can expect to hear is “Whaaaat?”.

Complexity of developing and consuming SOAP and REST services: GOOD

Developing and consuming REST services under RoR is a piece of cake. Using SOAP requires a few more steps but it’s easy enough too.

TL;DR

Ruby on Rails v3 is easy to learn and use, provides amazing development speed of web based applications and has a large and active community behind it that will help anyone making his first steps solve most problems.

From our evaluation perspective the main drawback of RoR is the lack of acceptance in the corporate sector, even though Ruby and RoR are now known by most people in the web development world, they are not yet accepted as serious platforms for mission critical solutions in sectors like banking, telecommunications, and the like (at least on the south half of the world :)).

So if your boss is OK with it, or if you are developing an independant solution, I think RoR is an amazing option. And as time passes and more people use it, I’m sure it will become a serious contender for Java and .NET.

Web development Framework Web Service app Database JavaScript engine IT

Published at DZone with permission of Ricardo Zuasti, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • What Is Enterprise Portal and How to Develop One?
  • 8 Proven Ways to Combat End-of-Life Software Risks
  • What Is API-First?
  • Unlocking the Power of ChatGPT

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: