Thursday, March 16, 2023
HomeRuby On RailsAn Intro To Hanami 2.0

An Intro To Hanami 2.0

Ruby on Bed rails is just one of one of the most preferred Ruby structures in programmer circles, however it’s not the just one. There are great deals of various other fairly unidentified structures, consisting of Roda, Sinatra, as well as Goliath. A few of these are quicker than Bed rails, loaded loaded with intriguing attributes, as well as could be the really device required for your following task.

In this post, we’ll have a look at one such structure: Hanami 2.0.

What is Hanami?

Hanami is a Ruby structure presented regarding 5 years back as well as at first called Lotus. The structure is the creation of programmer Luca Guidi.

On the task’s site, Hanami is called “a modern-day structure for Ruby”. It includes quick reaction times as well as safety attributes by default, as well as it is really light-weight.

Yet however, you might be questioning what “Hanami” implies? Well, it originates from the Japanese language as well as implies “blossom watching”, an instead preferred task where individuals rest with each other to take pleasure in blossom blooms.

From summaries offered by the language’s programmer, the name Hanami is a homage to the abundant Japanese heritage that the Ruby language is built on, something the programmer, Luca Guidi intended to highlight in the Hanami structure.

In this post, we’ll concentrate much more on the most recent variation, 2.0.

Why You Ought To Make use of Hanami, as well as Why You May Requirement (Yet) An Additional Ruby Structure

As we mentioned in the very start of this post, Hanami is simply among numerous Ruby structures.

Ruby on Bed Rails is one of the most preferred of the Ruby structures. It’s really modular as well as basic function. Maybe stated that it’s primary pledge is that you can utilize it to go from no to having a functioning application model in an issue of hrs.

After That there’s the much less preferred, however no much less effective Sinatra? What’s it’s super-power? Well, if you wish to develop something very lean as well as blazing quick utilizing Ruby, claim an HTTP web server API, after that Sinatra would certainly be a terrific selection.

According to Luca Guidi, the developer of Hanami, the general objective he intended to accomplish with the structure was to offer designers a device that would certainly aid them have as much performance as feasible.

Did he supply on that particular pledge?

Allow’s have a look at a few of the structure’s noteworthy attributes:

  • Several applications within a task – Whereas a Bed rails application is basically one huge modular application, in Hanami, you can have several applications within the primary task. Inside the primary folder tree, there is a folder called “applications”, in which you can have several applications in house (e.g., a JSON-driven API as well as a routine internet application within one app/project).

  • Rapid – At its heart, the structure was improved the suggestion of minimalism. It attempts really tough to stay clear of the huge application framework that is a significant function of a competitor like Bed rails. This concentrate on minimalism aids considerably in the rate division. Moreover, it’s stated to utilize 60% much less memory contrasted to various other Ruby structures.

  • Includes over MVC – Whereas Bed rails is greatly opinionated on just how an application needs to be constructed, Hanami (particularly variation 2.0) attempts to chart a various course by concentrating on constructing about attributes. Although describing this element of the structure carefully is past the range of this post, essentially, it implies that rather than the structure determining just how you need to develop an application complying with some “collection guidelines” (i.e., MVC framework), with Hanami, the programmer makes a decision just how to develop an application based upon the preferred attributes.

  • Callable things – Hanami takes the suggestion of object-oriented shows to an entire brand-new degree. Utilizing a common mixin-injection system, it is really simple to make up complicated things based upon various other, much easier things.

Naturally, this is an extremely streamlined attributes checklist. Hanami 2.0 is considerably even more than that, as well as you are very urged to see the task site to get more information regarding the structure.

Since we have a little bit much more info on what it’s everything about, allow’s have a look at what you can do with it.

What is Hanami Great for?

Relying On what you are constructing, you might locate that a general-purpose language like Bed rails is a terrific selection.

Nevertheless, Hanami’s one-of-a-kind characteristics can aid you develop for details usage situations, such as when you require the following:

  • Rate – Today, it’s even more of a policy than an exemption that your application requires to be quick, as well as languages as well as structures that can supply on this have a tendency to have an edge. Hanami’s reduced memory impact as well as really specified application framework make it a beneficial selection for your following application that requires to be as quick as feasible, such as an API.

  • Simpleness as well as maintainability – When you utilize a structure like Bed rails, you understand just how quick your codebase can expand depending upon what you are constructing. Despite having screening, such huge code frameworks have a tendency to conceal insects as well as various other ineffectiveness. As a solo programmer or little group, you might not have the sources to effectively keep such an application. Hanami has a tendency to prefer damaging performance down right into its tiniest feasible components, which implies that including attributes, refactoring, as well as insect monitoring has a tendency to be less complicated.

  • Safety – By default, Hanami applications include different internet safety includes baked in, consisting of material safety plan, X-frame headers, as well as automated running away.

Since we have an excellent suggestion of what the structure has to do with, allow’s get involved in the fun-stuff as well as develop a straightforward Hanami 2.0 application.

Allow’s Develop a Basic Hanami Application

The most effective means to obtain a preference of what Hanami is everything about is to roll up our sleeves as well as develop something with it. The application we are constructing is an extremely basic blog site application.

Utilizing this instance, you will certainly discover just how a Hanami 2.0 application is structured.


Prior to we start, ensure you have the following:

  • Ruby set up – Guarantee you have Ruby 2.3+ set up on your regional advancement equipment. We suggest utilizing a Ruby variation supervisor, such as RVM or rbenv

  • Bundler set up – Ensure to have the treasure supervisor Bundler in your area set up.

  • Regional SQLite 3+ setup – Although you can utilize the Postgres data source, in this instance, we’ll be utilizing an SQLite 3+ data source. In instance it’s not currently set up, utilize Bundler to mount it with package mount sqlite3

  • NodeJS – Node 16+ set up (since composing this post). You can utilize Node variation supervisor (NVM) to take care of various Node variations.

  • Overmind set up Overmind is a procedure supervisor that allows you run numerous procedures from a solitary terminal. Likewise, ensure you have tmux, an incurable session supervisor, set up as it’s called for by Overmind.

Essential note: Hanami 2.0 is still in alpha as well as under hefty advancement at the time of this writing, so points might damage.

Action 1: Configuration

With the Hanami CLI for variation 2 under hefty advancement, we’ll utilize the variation 2.0 starter design template readily available right here The finished example application we’ll develop is readily available right here

To comply with along, proceed as well as duplicate the repo as well as relabel it to ‘hanami2-blog-app’.

 git duplicate hanami2-blog-app

Following, in the incurable, button to the task folder as well as run package to mount the called for treasures.

After that, proceed as well as relabel all circumstances of the initial design template task name to the name of your brand-new application, “hanami2-blog-app” in this instance, utilizing the complying with command:

./ bin/install hanami2-blog-app

With this done, run the complying with in the terminal:

This will certainly configuration a number of points within the task, consisting of developing the application data source.

Action 2: Run the Application

Allowed’s currently run our instance application simply to see what a fundamental Hanami 2 application resembles. Go on as well as run the complying with command:

Currently, if whatever went as intended, a browse through to localhost:3000 needs to reveal your application running.

Prior to we study developing our application’s blog site performance, it would certainly be sensible to have a summary of just how a Hanami 2 application is structured, particularly if you are originating from a Bed rails history given that it has its very own means of doing points.

Introduction of a Hanami 2 Application Framework

Hanami truly presses the idea of abstraction or splitting up of worries to the limitation.

If you are originating from a Bed rails history as well as it really feels a little bit complicated, the streamlined layout listed below programs you just how that abstraction is performed in Hanami vs. Bed rails.

Hanami vs. Rails abstraction


The Hanami router as well as its Bed rails equivalent are usually the very same. They both identify Links as well as dispatch them to their pertinent activities (in Hanami) as well as controller activities (in Bed rails).

Activities vs. Controllers

As opposed to having controllers with activities in them, Hanami’s abstract design attributes bare activities, which are not enveloped in any type of type of “controller”.

” Versions” vs. Versions

Whereas you have designs as the determination user interface in Bed rails, Hanami uses ROM design, which provides you databases, relationships, as well as entities You additionally obtain “agreements”, which function as your application’s recognition engine.


In Bed rails, sights are usually made up of the real sights, formats, as well as partials. Hanami utilizes completely dry sight to abstract away this performance forward, components, as well as design templates.

There’s clearly a great deal even more to Hanami’s abstraction design, therefore to get more information, we suggest going to the task’s site

Since we have a basic suggestion of what Hanami resembles under the hood, allow’s maintain going.

Action 3: Producing as well as Seeing Blog Sites

The photo listed below demonstrate how a straightforward http obtain demand is dealt with by Hanami.

Hanami http request

We would love to develop a couple of blog site write-ups as well as have the ability to see them, so we’ll begin with the router as well as proceed right to structuring the sight.

Transmitting Hanami Design

When an internet site visitor demands a particular web page from a web browser, the demand is used up by the Hanami router as well as matched to an appropriate activity.

In your code editor, open up the paths documents, located under config/routes. rb The default documents is revealed listed below:

 # frozen_string_literal: real

#./ config/routes. rb

call for " hanami/application/routes"

component Hanami2BlogApp
course Paths <


Most Popular

Recent Comments