Skip to content

hirakero/review-site

Repository files navigation

Isomorphic Clojure Webapp

バックエンドもフロントエンドもClojureで書くためのプロジェクトテンプレートです.

⚠️⚠️⚠️ Windowsユーザーは必ずWSL2のファイルシステム上にクローンしてください。ホットリロードが効かず、開発体験を著しく損ねます。WSL2について詳しくはこちら ⚠️⚠️⚠️

開発

準備(VSCode+Calvaの場合)

このリポジトリの推奨開発環境は、VSCode+devcontainer+Calvaです。 コードベースを開くとdevcontainerを利用するか確認されるので、承認してください。 見逃した時は、コマンドパレットから Remote-Container: Reopen in container を選択してください。

初回のみ、

  • Dockerイメージのビルドプロセス
  • 推奨プラグインのインストールの要否

を確認されます。どちらも受け入れてください。

準備

はじめてcloneしたら、下記を実行する:

lein duct setup

これによって、あなたのローカル環境専用の設定が構築されます。

開発環境を起動する

まずはREPLを起動しましょう。

lein repl

次に開発環境をロードします。

user=> (dev)
:loaded

go を実行してシステムを初期化します。

dev=> (go)
:duct.server.http.jetty/starting-server {:port 3000}
:initiated

デフォルトで http://localhost:3000 にWebサーバーが起動します。

ソースを変更したら、 reset を使って、Webサーバーを更新してください。

dev=> (reset)
:reloading (...)
:resumed

また、ClojureScriptでアプリケーションを開発するには、下記を実行します

npm install # 初回のみ
npm run dev

これによってClojureScriptのホットリロードが始まります。

テストの実行

バックエンドの単体テスト

REPLから実行しましょう。

dev=> (test) ; すべてのテストを探して実行する
dev=> (test 'awesome.app-test) ; 特定のnamespaceのテストを実行する
dev=> (test "test/clj/awesome/app-test.clj") ; 特定のファイルのテストを実行する
dev=> (test 'awesome.app-test/create!-test) ;特定のテスト関数を実行する
dev=> (test ['awesome.app-test/create!-test 'awesome.app-test/update!-test]) ; 複数のテストを実行することもできる

フロントエンドの単体テスト

npm run dev を開始していれば、下記にアクセスすることで自動的に単体テストが実行されます。

open localhost:8021

静的解析

ターミナルから実行しましょう。

lein idiom:{check|fix}
lein format:{check|fix}

結合テスト

ターミナルから実行しましょう。

npm run test:integration

マイグレーションの追加

resources/config.edn:duct.profile/base 内に下記を追加しましょう。

:duct.migrator/ragtime {:migrations [#ig/ref your.first.migration/create_tasks_table]}
[:duct.migrator.ragtime/sql :your.first.migration/create_tasks_table] {:up ["create table tasks (id integer autoincrement primary key, label varcahr(128) not null);"]
                                                                       :down ["drop table tasks;"]}

その後、開発サーバーを (reset) しましょう。マイグレーションが実行されます。

ductのマイグレーターには下記のような機能もあります。詳しくは duct-framework/migrator.ragtime を読んでください。

  • SQLファイルを利用する
  • 本番環境でマイグレーターのみを実行する

テンプレートリポジトリのTODO

  • テストのモッキング例
  • バリデーション例
  • schemaspyによるER図の自動生成とチーム共有
  • カバレッジレポートの開発者への共有
  • Dockerイメージ作成(マイグレーションも実行する) & デプロイ

Legal

Copyright © 2022 blackawa

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published