Ruby and Rails: The Strengths and Challenges
Ruby on Rails is such an oft-used and popular term that a layman could be forgiven to have assumed it to be one single technology. We are, however, essentially talking about Ruby, a programming language that works within Rails, an open source framework, to give developers a tool that simplifies the process of web application development.
As Ruby and Rails celebrate their decade old successful partnership, it is a good time to evaluate what factors contribute to their success and what areas need attention.
RoR or Rails is based on the “convention over configuration” principle. Simply put, it means that the developer does not have to spend precious time on setting up the file configuration. Rails works on the presumption of certain coding conventions that, when followed, make application development easier and faster. Rails, created by David Hansson, made inroads into web development at a time when Java and PHP were the other strong alternate contenders, yet made a powerful impact with its standardised functions that simplified repetitive tasks by abstracting a database into objects, classes and attributes.
Why has RoR gained so much traction in the past many years?
An advocate of Agile Web Development: The Agile Web Development techniques and RoR technology are a great fit for one another. While Agile Development is all about embracing changes, handling database changes is never an easy task. However, RoR not only gives the developers a respite from building databases from scratch but also adapts to changes very easily. This is a valuable asset when making multiple iterations to your product and in the ultimate quest for achieving customer satisfaction.
Simultaneous testing: Testing is crucial to developing any good, sturdy product. Rails scores high on this aspect by providing a strong framework that enable constant testing of existing codes even as newer ones are being written. Frameworks like Capybara transform user stories into executable test cases.
Faster application prototyping: The process of building a mock future system of, say, a website or application, is called prototyping and when this is done in a rapid way, it allows for more iterations and a faster feedback from developers, users, designers and stakeholders to reach the optimum level of design and performance. The Rails framework is apt for a faster prototyping, thus, leveraging its benefits. Since its launch, the framework has been used to build over 600,000 websites including very popular ones like Twitter, Github, Hulu, and Shopify.
A boon for scripting and libraries with RubyGems: RubyGems can be easily classified as one of the strong forces for the RoR framework. RubyGems, the packet manager, enables to create and share software libraries called gems that are easy to install and help the developers build complex sites with ease. These are indeed value adding gems because they save development and maintenance time for developers by integrating disparate libraries. A case in study is Amazon that uses Ruby wrappers or libraries.
What are the challenges that RoR needs to watch out for?
Even though RoR has much going for it, there are areas where it is losing ground and needs a careful re-evaluation.
Slow to scale due to an asynchronous library: Twitter had to quit using RoR because Rails could not match its speed in scaling. The reason is basically Ruby is not a fast language and also does not have an asynchronous library support which makes scaling slow. While RubyGems has its advantages, most of them are not threadsafe.
Easy to misuse: While RoR endeavours to make things simple and faster, an incorrect use of the conventions would have the opposite effect. For instance, having more logic in the controller/view/model will lead to violating the single responsibility principle. Violation of coding conventions cuts down on performance since the file size becomes larger than intended and it becomes difficult to pinpoint the error since a lot of “auto-magic” coding happens behind-the-scenes.
Lack of high-level automated test: While RoR makes it easy to add automated test capabilities, there is no integrated test written for each application. An automated test will, in case of a version upgrade, ensure that the basic functionality is free from bugs and errors.
Difficult learning curve: An inexperienced developer might find it difficult to learn the ropes of RoR because while it is omakase, it also allows for certain substitutions. So, it has two default stacks and thus it might seem confusing for a beginner trying to get a grasp of its nuances.
Even as we bring out the strengths and challenges for RoR, this report underlines the fact that despite the pitfalls, there seems to be a growing demand for RoR jobs.