Projects: アプリを選択的に起動する


Hanamiでは、Monolith-First原則に従ってプロジェクトを構築できます。 プロジェクトにコードを追加するにつれて、プロジェクトを複数のHanamiアプリに分割することで、それを有機的拡張できます。

実際のHanamiプロジェクトでは、同じプロジェクト内に多数のHanamiアプリ(たとえば、フロントエンド用のweb、管理用のadmin、JSON API用のAPIなど)を持つことができます。 それらはすべて同じプロジェクトの一部ですが、異なるサーバーにデプロイしたいかもしれません。 たとえば、ほとんどのサーバーはwebアプリ(サイトの顧客用)に、いくつかはapi(おそらくモバイルアプリを使用する顧客用)に使用し、そして、単一のサーバーでadminアプリを実行することもできます。これは他の2つよりもトラフィックが少なくなる可能性があるためです。

選択的起動 でこれをサポートします:

# config/environment.rb
# ...
Hanami.configure do
  if Hanami.app?(:web)
    require_relative '../apps/web/application'
    mount Web::Application, at: '/'
  end

  if Hanami.app?(:api)
    require_relative '../apps/api/application'
    mount Api::Application, at: '/api'
  end

  if Hanami.app?(:admin)
    require_relative '../apps/admin/application'
    mount Admin::Application, at: '/admin'
  end
end

HANAMI_APPS環境変数を使用して、使用するアプリを宣言できます。 単一のアプリ、または複数のアプリ(コンマで結合)を指定できます:

$ HANAMI_APPS=web,api bundle exec hanami server

This would start only the web and api applications.