バックエンドもフロントエンドもClojureで書くためのプロジェクトテンプレートです.
このリポジトリの推奨開発環境は、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ファイルを利用する
- 本番環境でマイグレーターのみを実行する
- テストのモッキング例
- バリデーション例
- schemaspyによるER図の自動生成とチーム共有
- カバレッジレポートの開発者への共有
- Dockerイメージ作成(マイグレーションも実行する) & デプロイ
Copyright © 2022 blackawa