Ruby on Rails vs Node.js

Ruby on Rails or Node.js: what to choose to create a web application?
18 July 2017   2272
Ruby on Rails

Framework, written on Ruby programming language.

Compare Node.js and Ruby on Rails "face to face" will not work. Ruby on Rails is a framework, and what is Node js? This is a software platform that serves as the environment for executing JavaScript code. However, if we consider both solutions as a set of capabilities and tools that they can provide to the developer to create a full-fledged product, then we can draw some analogies. It is in this vein that we will compare these platforms in the article. You can have more info about Ruby on Rails at this article.

Ruby on Rails code example
Ruby on Rails code example

So, let compare Ruby on Rails vs Node.js.

Accessibility for beginners

Node.js can be learned more quickly, because It uses JavaScript. And this language is known for its rather low entry threshold. In addition, frontend developers face JS more often. Therefore, many developers can already have a base to begin learning the basics of Node.

A programmer who has learned Ruby "in passing" on a level sufficient for mastering Rails is a rarity. Usually, if someone writes in this language, he studies it purposefully. Ruby, though it has built-in useful methods for dates, strings, arrays and other elements, can still scare away with more complex syntax.

Performance

The V8 engine running Node.js shows excellent speed results. Ruby is a slow language, and Rails does nothing to increase productivity, inheriting all the problems of the parent. When developing a small application, it is most likely not affected.

Node.jsNode.js

But as soon as there is a certain load on the project, the speed of Node.js will become noticeable. Its non-blocking architecture, built on the use of callback, performs well under concurrency when it is necessary to handle a lot of I / O operations.

Libraries

For more than ten years, Ruby on Rails framework has managed to develop almost all necessary plug-ins and extensions, which not only simplify the work, but also guarantee the absence of problems with their use. For such a long time, all the critical errors and imperfections of the functional have long been found and corrected.

Node.js is actively developing, and therefore not all libraries and additions have taken their final form and often conflict with each other. Yes, they can be easily installed with the help of a convenient NPM package manager, but, unfortunately, he does not insure against errors.
Using JavaScript frameworks like Sails.js or Kraken.js does not help much. Although they are trying to conceptually resemble Rails, they still lack the magic and gems of this framework.

Other features

  • Node.js is an asynchronous platform, which provides an excellent query processing speed. However, this same feature complicates the debugging of JavaScript code. Ruby is a classic multithreaded language, and it lacks this disadvantage.
  • Rails immediately uses MVC and offers a set of necessary functions for development. Pure Node.js does not have these advantages, the use of Express.js even though it makes it possible to use the "model-controller-view" model, still does not allow to achieve RoR flexibility. On the other hand, the way to solve a problem in Ruby on Rails is not always obvious and is hidden behind the abundance of gems and magic. Node.js will show exactly what you wrote, with a minimum of distortion.

Technical documentation and community

JavaScript is one of the most fashionable languages ​​of recent years. Therefore Node.js can be found in very different projects: web applications, messaging systems, CRM-systems, sometimes even on usual sites. Thanks to this, a large circle of developers actively engaged in the development of the language has formed around it. To the platform itself is excellent documentation, but the comments and details of the use of some not very popular libraries may not be enough.

Ruby - this is a fairly long-established community. Rails is the most popular framework for this language, so it's easy to find information on it. In addition, RoR has a detailed technical background, and gems are usually accompanied by detailed developer and community comments.

Final comparison of Ruby on Rails and Node.js

Node.js Ruby on Rails
Development platform Framework
Easy-to learn, based on popular JavaScript  More complicated syntax and the needs to learn from the scratch
High performance Lower performance
Big selection of libraries, but not all of them are equally reliable and compatible Many ready-made add-ons with detailed descriptions and comments
Using an asynchronous programming language Using a multithreaded programming language
Detailed documentartion on Node.js itself, but less detailed about add-ons Formed community and documentation around the framework and add-ons to it.

What technology do you like more?

Node.js and Ruby on Rails are popular programming best on JavaScript and Ruby. Each of them has strong and weak sides. In your opinion, what technology is more perspective and interesting? Maybe, you have a real-work experience with one or both of them? Please, share your opinion!

DateTime, Timestamp, Time and Date in Rails

Learn about key differenece between DateTime, Timestamp, Time and Date in Rails
31 October 2017   603

The difference between different date/time formats in ActiveRecord have little to do with Rails and everything to do with whatever database you're using.

Using MySQL as an example (if for no other reason because it's most popular), you have DATEDATETIMETIME and TIMESTAMP column data types; just as you have CHARVARCHARFLOATand INTEGER.

So, main differences: DATE only stores a date, TIME only stores a time of day, while DATETIME stores both.

The difference between DATETIME and TIMESTAMP is a bit more subtle: DATETIME is formatted as YYYY-MM-DD HH:MM:SS. Valid ranges go from the year 1000 to the year 9999 and everything in between. While TIMESTAMP looks similar when you fetch it from the database, it's really a just a front for a unix timestamp. Its valid range goes from 1970 to 2038. The difference here, aside from the various built-in functions within the database engine, is storage space. Because DATETIMEstores every digit in the year, month day, hour, minute and second, it uses up a total of 8 bytes. As TIMESTAMP only stores the number of seconds since 1970-01-01, it uses 4 bytes.

You can read more about the differences between time formats in MySQL here.

In the end, it comes down to what you need your date/time column to do. Do you need to store dates and times before 1970 or after 2038? Use DATETIME. Do you need to worry about database size and you're within that timerange? Use TIMESTAMP. Do you only need to store a date? Use DATE. Do you only need to store a time? Use TIME.

Having said all of this, Rails actually makes some of these decisions for you. Both :timestamp and :datetime will default to DATETIME, while :date and :time corresponds to DATE and TIME, respectively.