CINXE.COM

Hanami | Status

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="description" content="Hanami - A flexible framework for maintainable Ruby apps" /> <meta name="keywords" content="hanami,hanamirb,lotus,lotusrb,web,framework,ruby,open source,oss,os,software,free,free software,architecture,fast,lightweight,testing,tdd,bdd,test driven development,behaviour driven development,full stack,mvc,model view object,pattern,patterns,design patterns,oop,object oriented programming,testability,http,https,routing,router,http router,restful,resource,resources,convention,controller,models,repository,query,sql,interactors,two-step view,view,template,presenters,render,rendering,helpers,erb,haml,tilt,json,xml,yaml,yml,framwork,framewrok,riby,free sowftare"/> <meta name="author" content="Tim Riley"> <meta content="width=device-width, initial-scale=1.0" name="viewport" /> <link href="/atom.xml" rel="alternate" title="Hanami" type="application/atom+xml" /> <link href="/images/favicon.ico" rel="icon" type="image/ico" /> <title>Hanami | Status</title> <link href="//fonts.googleapis.com/css?family=Roboto:100,300,400,700" rel="stylesheet"> <link href="//fonts.googleapis.com/css?family=Overpass:200,300,400,700" rel="stylesheet"> <link href="/stylesheets/toolkit-minimal.css" rel="stylesheet" /> <link href="/stylesheets/search.css" rel="stylesheet" /> <link href="/stylesheets/application-minimal.css" rel="stylesheet" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" /> <script async defer src="https://buttons.github.io/buttons.js"></script> </head> <body> <nav id="navigation" class="navbar navbar-default navbar-static-top navbar-padded app-navbar"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed p-x-0" data-toggle="collapse" data-target="#navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand text-uppercase" href="/"> <span>Hanami</span> </a> </div> <div class="navbar-collapse collapse" id="navbar-collapse"> <ul class="nav navbar-nav navbar-right text-uppercase"> <li> <a href="https://guides.hanamirb.org" target="_blank">Guides</a> </li> <li> <a href="/community">Community</a> </li> <li> <a href="https://github.com/hanami" target="_blank">Source Code</a> </li> <li> <a href="/blog">Blog</a> </li> <li> <a href="/donate"><strong>馃挏 Become a Sponsor</strong></a> </li> </ul> </div><!--/.nav-collapse --> </div> </nav> <div id="hanami2" class="text-xs-center"> <div class="container"> <div class="row"> We have just released <strong>Hanami 2.2</strong>! Read the <a href="/blog/2024/11/05/hanami-220/">announcement</a>. </div> </div> </div> <div class="container"> <h2>Hanami stable and development status</h2> <hr> <h3>Main Hanami Ruby gems</h3> <table class="status"> <tr> <th>Ruby gem</th> <th>Stable gem version</th> <th>Stable CI build (2.1)</th> <th>Development CI build (2.2)</th> <th>Target Hanami version</th> </tr> <tr> <td> <a href="http://github.com/hanami/hanami"> Hanami </a> </td> <td> <a href="http://badge.fury.io/rb/hanami"> <img src="https://badge.fury.io/rb/hanami.svg"> </a> </td> <td> <a href="https://github.com/hanami/hanami/actions?query=workflow%3Aci+branch%3A2.1.x"> <img src="https://github.com/hanami/hanami/workflows/ci/badge.svg?branch=2.1.x"> </a> </td> <td> <a href="https://github.com/hanami/hanami/actions?query=workflow%3Aci+branch%3main"> <img src="https://github.com/hanami/hanami/workflows/ci/badge.svg?branch=main"> </a> </td> <td class="status-hanami-2-yes"> 2.0 (Done) </td> </tr> <tr> <td> <a href="http://github.com/hanami/reloader"> Reloader </a> </td> <td> <a href="http://badge.fury.io/rb/hanami-reloader"> <img src="https://badge.fury.io/rb/hanami-reloader.svg"> </a> </td> <td> <a href="https://github.com/hanami/reloader/actions?query=workflow%3Aci+branch%3A2.1.x"> <img src="https://github.com/hanami/reloader/workflows/ci/badge.svg?branch=2.1.x"> </a> </td> <td> <a href="https://github.com/hanami/reloader/actions?query=workflow%3Aci+branch%3main"> <img src="https://github.com/hanami/reloader/workflows/ci/badge.svg?branch=main"> </a> </td> <td class="status-hanami-2-yes"> 2.0 (Done) </td> </tr> <tr> <td> <a href="http://github.com/hanami/rspec"> RSpec </a> </td> <td> <a href="http://badge.fury.io/rb/hanami-rspec"> <img src="https://badge.fury.io/rb/hanami-rspec.svg"> </a> </td> <td> <a href="https://github.com/hanami/rspec/actions?query=workflow%3Aci+branch%3A2.1.x"> <img src="https://github.com/hanami/rspec/workflows/ci/badge.svg?branch=2.1.x"> </a> </td> <td> <a href="https://github.com/hanami/rspec/actions?query=workflow%3Aci+branch%3main"> <img src="https://github.com/hanami/rspec/workflows/ci/badge.svg?branch=main"> </a> </td> <td class="status-hanami-2-yes"> 2.0 (Done) </td> </tr> <tr> <td> <a href="http://github.com/hanami/webconsole"> Webconsole </a> </td> <td> <a href="http://badge.fury.io/rb/hanami-webconsole"> <img src="https://badge.fury.io/rb/hanami-webconsole.svg"> </a> </td> <td> <a href="https://github.com/hanami/webconsole/actions?query=workflow%3Aci+branch%3A2.1.x"> <img src="https://github.com/hanami/webconsole/workflows/ci/badge.svg?branch=2.1.x"> </a> </td> <td> <a href="https://github.com/hanami/webconsole/actions?query=workflow%3Aci+branch%3main"> <img src="https://github.com/hanami/webconsole/workflows/ci/badge.svg?branch=main"> </a> </td> <td class="status-hanami-2-yes"> 2.1 (Done) </td> </tr> <tr> <td> <a href="http://github.com/hanami/cli"> CLI </a> </td> <td> <a href="http://badge.fury.io/rb/hanami-cli"> <img src="https://badge.fury.io/rb/hanami-cli.svg"> </a> </td> <td> <a href="https://github.com/hanami/cli/actions?query=workflow%3Aci+branch%3A2.1.x"> <img src="https://github.com/hanami/cli/workflows/ci/badge.svg?branch=2.1.x"> </a> </td> <td> <a href="https://github.com/hanami/cli/actions?query=workflow%3Aci+branch%3main"> <img src="https://github.com/hanami/cli/workflows/ci/badge.svg?branch=main"> </a> </td> <td class="status-hanami-2-yes"> 2.0 (Done) </td> </tr> <tr> <td> <a href="http://github.com/hanami/model"> Model </a> </td> <td> <a href="http://badge.fury.io/rb/hanami-model"> <img src="https://badge.fury.io/rb/hanami-model.svg"> </a> </td> <td> N/A </td> <td> <a href="https://github.com/hanami/model/actions?query=workflow%3Aci+branch%3main"> <img src="https://github.com/hanami/model/workflows/ci/badge.svg?branch=main"> </a> </td> <td class="status-hanami-2-no"> 2.2 (Not Started) </td> </tr> <tr> <td> <a href="http://github.com/hanami/assets"> Assets </a> </td> <td> <a href="http://badge.fury.io/rb/hanami-assets"> <img src="https://badge.fury.io/rb/hanami-assets.svg"> </a> </td> <td> <a href="https://github.com/hanami/assets/actions?query=workflow%3Aci+branch%3A2.1.x"> <img src="https://github.com/hanami/assets/workflows/ci/badge.svg?branch=2.1.x"> </a> </td> <td> <a href="https://github.com/hanami/assets/actions?query=workflow%3Aci+branch%3Amain"> <img src="https://github.com/hanami/assets/workflows/ci/badge.svg?branch=main"> </a> </td> <td class="status-hanami-2-yes"> 2.1 (Done) </td> </tr> <tr> <td> <a href="http://github.com/hanami/mailer"> Mailer </a> </td> <td> <a href="http://badge.fury.io/rb/hanami-mailer"> <img src="https://badge.fury.io/rb/hanami-mailer.svg"> </a> </td> <td> N/A </td> <td> <a href="https://github.com/hanami/mailer/actions?query=workflow%3Aci+branch%3Amain"> <img src="https://github.com/hanami/mailer/workflows/ci/badge.svg?branch=main"> </a> </td> <td class="status-hanami-2-no"> 2.2 (Not Started) </td> </tr> <tr> <td> <a href="http://github.com/hanami/helpers"> Helpers </a> </td> <td> <a href="http://badge.fury.io/rb/hanami-helpers"> <img src="https://badge.fury.io/rb/hanami-helpers.svg"> </a> </td> <td> N/A </td> <td> N/A </td> <td class="status-hanami-2-no"> N/A (Merge into View) </td> </tr> <tr> <td> <a href="http://github.com/hanami/view"> View </a> </td> <td> <a href="http://badge.fury.io/rb/hanami-view"> <img src="https://badge.fury.io/rb/hanami-view.svg"> </a> </td> <td> <a href="https://github.com/hanami/view/actions?query=workflow%3Aci+branch%3A2.1.x"> <img src="https://github.com/hanami/view/workflows/ci/badge.svg?branch=2.1.x"> </a> </td> <td> <a href="https://github.com/hanami/views/actions?query=workflow%3Aci+branch%3Amain"> <img src="https://github.com/hanami/view/workflows/ci/badge.svg?branch=main"> </a> </td> <td class="status-hanami-2-yes"> 2.1 (Done) </td> </tr> <tr> <td> <a href="http://github.com/hanami/controller"> Controller </a> </td> <td> <a href="http://badge.fury.io/rb/hanami-controller"> <img src="https://badge.fury.io/rb/hanami-controller.svg"> </a> </td> <td> <a href="https://github.com/hanami/controller/actions?query=workflow%3Aci+branch%3A2.1.x"> <img src="https://github.com/hanami/controller/workflows/ci/badge.svg?branch=2.1.x"> </a> </td> <td> <a href="https://github.com/hanami/controller/actions?query=workflow%3Aci+branch%3Amain"> <img src="https://github.com/hanami/controller/workflows/ci/badge.svg?branch=main"> </a> </td> <td class="status-hanami-2-yes"> 2.0 (Done) </td> </tr> <tr> <td> <a href="http://github.com/hanami/router"> Router </a> </td> <td> <a href="http://badge.fury.io/rb/hanami-router"> <img src="https://badge.fury.io/rb/hanami-router.svg"> </a> </td> <td> <a href="https://github.com/hanami/router/actions?query=workflow%3Aci+branch%3A2.1.x"> <img src="https://github.com/hanami/router/workflows/ci/badge.svg?branch=2.1.x"> </a> </td> <td> <a href="https://github.com/hanami/router/actions?query=workflow%3Aci+branch%3Amain"> <img src="https://github.com/hanami/router/workflows/ci/badge.svg?branch=main"> </a> </td> <td class="status-hanami-2-yes"> 2.0 (Done) </td> </tr> <tr> <td> <a href="http://github.com/hanami/validations"> Validations </a> </td> <td> <a href="http://badge.fury.io/rb/hanami-validations"> <img src="https://badge.fury.io/rb/hanami-validations.svg"> </a> </td> <td> <a href="https://github.com/hanami/validations/actions?query=workflow%3Aci+branch%3A2.1.x"> <img src="https://github.com/hanami/validations/workflows/ci/badge.svg?branch=2.1.x"> </a> </td> <td> <a href="https://github.com/hanami/validations/actions?query=workflow%3Aci+branch%3Amain"> <img src="https://github.com/hanami/validations/workflows/ci/badge.svg?branch=main"> </a> </td> <td class="status-hanami-2-yes"> 2.0 (Done) </td> </tr> <tr> <td> <a href="http://github.com/hanami/utils"> Utils </a> </td> <td> <a href="http://badge.fury.io/rb/hanami-utils"> <img src="https://badge.fury.io/rb/hanami-utils.svg"> </a> </td> <td> <a href="https://github.com/hanami/utils/actions?query=workflow%3Aci+branch%3A2.1.x"> <img src="https://github.com/hanami/utils/workflows/ci/badge.svg?branch=2.1.x"> </a> </td> <td> <a href="https://github.com/hanami/utils/actions?query=workflow%3Aci+branch%3Amain"> <img src="https://github.com/hanami/utils/workflows/ci/badge.svg?branch=main"> </a> </td> <td class="status-hanami-2-yes"> 2.0 (Done) </td> </tr> </table> <hr> <h3>Other Hanami Ruby gems</h3> <table class="status"> <tr> <th>Ruby gem</th> <th>Stable gem version</th> <th>Stable CI build</th> <th>Development CI build</th> </tr> <tr> <td> <a href="http://github.com/hanami/api"> API </a> </td> <td> <a href="http://badge.fury.io/rb/hanami-api"> <img src="https://badge.fury.io/rb/hanami-api.svg"> </a> </td> <td> <a href="https://github.com/hanami/api/actions?query=workflow%3Aci+branch%3A0.3.x"> <img src="https://github.com/hanami/api/workflows/ci/badge.svg?branch=0.3.x"> </a> </td> <td> <a href="https://github.com/hanami/api/actions?query=workflow%3Aci+branch%3Amain"> <img src="https://github.com/hanami/api/workflows/ci/badge.svg?branch=main"> </a> </td> </tr> </table> <hr> <h2>Git branches</h2> <h3>Development: <code>main</code></h3> <p><strong>The default Git branch for Hanami repositories is <code>main</code></strong>.<br> It is the base branch for <strong>future releases</strong>.<br> <strong>New features must be merged there</strong>.<br> <strong>New gem pre-releases must happen from <code>main</code></strong>.<br> Once a gem is released as stable, create a stable branch counterpart.</p> Example: a new feature for Hanami 2, must be branched from <code>main</code> and merged in <code>main</code>. <hr> <h3>Stable: <code>Major.Minor.x</code> (e.g. <code>2.1.x</code>)</h3> <p><strong>Maintenance code of stable versions must be merged in these branches.</strong><br> <strong>New gem releases must happen from these branches</strong>.</p> Example: a bug fix for Hanami 1, must be branched from <code>2.1.x</code> and merged into <code>1.3.x</code>. </div> <div class="block app-block-footer"> <div class="container"> <div class="row"> <div class="col-sm-2 m-b"> <ul class="list-unstyled list-spaced"> <li><h6 class="text-uppercase">Project</h6></li> <li><a href="https://github.com/hanami" target="_blank">GitHub</a></li> <li><a href="https://rubygems.org/gems/hanami" target="_blank">Rubygems</a></li> <li><a href="/status">Gems Status</a></li> <li><a href="/team">Team</a></li> <li><a href="/security">Security</a></li> <li><a href="/privacy">Privacy Policy</a></li> <li><a href="https://guides.hanamirb.org/" target="_blank">Guides</a></li> <li><a href="https://docs.hanamirb.org/" target="_blank">Docs</a></li> </ul> </div> <div class="col-sm-2 m-b"> <ul class="list-unstyled list-spaced"> <li><h6 class="text-uppercase">Community</h6></li> <li><a href="/community#code-of-conduct">Code of Conduct</a></li> <li><a href="https://discourse.hanamirb.org" target="_blank">Forum</a></li> <li><a href="https://discord.gg/KFCxDmk3JQ" target="_blank">Chat</a></li> <li><a href="https://ruby.social/@hanami" rel="me" target="_blank">Mastodon</a></li> <li><a href="https://bsky.app/profile/hanamirb.org" target="_blank">Bluesky</a></li> <li><a href="https://stackoverflow.com/questions/tagged/hanami" target="_blank">StackOverflow</a></li> </ul> </div> <div class="col-sm-2 m-b"> <ul class="list-unstyled list-spaced"> </ul> </div> <div class="col-sm-6"> <h6 class="text-uppercase">About</h6> <p> &copy; 2014-2025 Hanami Team.<br> Released under the <a href="https://opensource.org/licenses/MIT" target="_blank">MIT License</a>. <br><br> This project was formerly known as <strong>Lotus</strong>. </p> <a class="github-button" href="https://github.com/hanami/hanami" data-size="large" data-show-count="true" aria-label="Star hanami/hanami on GitHub">Star</a> </div> </div> </div> </div> <script src="/javascripts/jquery.min.js" type="text/javascript"></script> <script src="/javascripts/toolkit.js" type="text/javascript"></script> <script src="/javascripts/application.js" type="text/javascript"></script> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-47369640-1', 'hanamirb.org'); ga('send', 'pageview'); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10