LoginSignup
0
0

More than 1 year has passed since last update.

hanamiで簡単なREST APIを作る 1日目

Last updated at Posted at 2022-12-05

はじめに

Railsを普段書いているエンジニアです
hanamiというRubyで作られたWebフレームワークがあることを知りました
v2.0.0がリリースされたらしいので、一度触ってみたいと思います

環境

windows 10, wsl2
ubuntu 22.04
ruby 3.1.2
hanami 2.0.0

hanamiの準備

hanamiのインストール自体はRailsと同じようにhanamiコマンドが用意されています

gem install hanami
hanami new sample_app

プロジェクトの作成もhanami newで実行できます

webサーバーを立ち上げてみます

cd sample_app
hanami sever
open http://localhost:2300/

bd438e4a24bc7bad70915b89954bccba.png

hello from hanamiと表示されました

postgreSQLとの接続

こちらを参考にインストールしてください
https://wiki.postgresql.org/wiki/Apt

Gemfile
gem "rom", "~> 5.3"
gem "rom-sql", "~> 3.6"
gem "pg"

こちらを追記してbundle installをします

rails db:createのようなdbを作成するコマンドはhanamiでは提供されていないようなので、postgreSQLのコンソールからcreatedbコマンドを実行します

createdb sample_app_development

dbに接続するための設定を書いていきます

config/providers/persistence.rb
Hanami.app.register_provider :persistence, namespace: true do
  prepare do
    require "rom"

    config = ROM::Configuration.new(:sql, target["settings"].database_url)

    register "config", config
    register "db", config.gateways[:default].connection
  end

  start do
    config = target["persistence.config"]

    config.auto_registration(
      target.root.join("lib/sample_app/persistence"),
      namespace: "SampleApp::Persistence"
    )

    register "rom", ROM.container(config)
  end
end

database_urlを設定するためにhanamiのSettingsクラスに追加します

config/settings.rb
# frozen_string_literal: true

module SampleApp
  class Settings < Hanami::Settings
    # Define your app settings here, for example:
    #
    # setting :my_flag, default: false, constructor: Types::Params::Bool
    setting :database_url, constructor: Types::String
  end
end

.envに接続先を設定します

.env
DATABASE_URL=postgres://postgres:postgres@localhost:5432/sample_app_development

ここまでで一旦開発環境の構築は完了しました!
次回は実際にAPIの作成をしていきます

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0