Overview

Ruby is a dynamic, expressive language with a strong history in web development. Several frameworks have emerged over the years, offering different trade-offs for speed, flexibility, and structure.

In this article, we’ll explore the most popular Ruby web frameworks and help you choose the right one for your project.

1. Ruby on Rails

The most popular and full-featured Ruby framework.

Pros:

  • Convention over configuration
  • Built-in ORM (ActiveRecord), migrations, mailers, etc.
  • Large community and ecosystem

Cons:

  • Heavy for small applications
  • Learning curve for beginners

Example:

# config/routes.rb
Rails.application.routes.draw do
  get '/hello', to: 'welcome#index'
end

# app/controllers/welcome_controller.rb
class WelcomeController < ApplicationController
  def index
    render plain: "Hello from Rails!"
  end
end

2. Sinatra

A lightweight DSL for quickly creating web applications.

Pros:

  • Minimal and fast
  • Simple to learn
  • Ideal for microservices or small APIs

Cons:

  • Manual setup for features like DB access
  • Less suitable for large apps

Example:

require 'sinatra'

get '/' do
  "Hello from Sinatra!"
end

3. Hanami

A modern and modular Ruby web framework.

Pros:

  • Clean architecture
  • Modular and lightweight
  • Uses ROM for data access

Cons:

  • Smaller community than Rails/Sinatra
  • Learning curve due to new concepts

Example:

# config/routes.rb
get '/hello', to: 'home#index'

# apps/web/controllers/home/index.rb
module Web::Controllers::Home
  class Index
    include Web::Action

    def call(params)
      self.body = 'Hello from Hanami!'
    end
  end
end

Comparison Table

FrameworkBest ForProsCons
RailsFull-featured appsBuilt-in tools, ecosystemHeavy, opinionated
SinatraSmall apps, APIsSimple, lightweightLess structure
HanamiClean architectureModular, modernSmaller community

Conclusion

  • Choose Rails for conventional, full-stack applications.
  • Use Sinatra when you need something small and fast.
  • Try Hanami if you want modularity and architectural purity.