Skip to content

Latest commit

 

History

History
343 lines (277 loc) · 9.45 KB

ducere.md

File metadata and controls

343 lines (277 loc) · 9.45 KB

Ducereコマンド

戻る

目次

イントロダクション

ducereはRuby on Railsにおけるrake、Laravelにおけるphp artisanのようなBasolatoフレームワークのCLIツールです。

使い方

new

新しくプロジェクトを作ります

pwd
> /user/local/src
ducere new my_project
> Created project /user/local/src/my_project
pwd
> /user/local/src
mkdir my_project
cd my_project
ducere new .
> Created project /user/local/src/my_project

serve

Usage:
  serve [optional-params] 
Run dev application with hot reload
Options:
  -h, --help                  print this cligen-erated help
  --help-syntax               advanced: prepend,plurals,..
  --version      bool  false  print version
  -p=, --port=   int   5000   set port
  -f, --force    bool  false  set force
  --httpbeast    bool  false  set httpbeast
  --httpx        bool  false  set httpx

ホットリロードが有効になった開発用サーバーを立ち上げます。

ducere serve

デフォルトでは5000番ポートで起動します。-pのオプションを付けることで起動ポートを変更できます。

ducere serve -p:8000

ホストを設定するにはconfig.nimsの環境変数を編集してください。

putEnv("HOST", "127.0.0.2")

アプリケーションサーバーのコアをasynchttpserverの代わりにhttpbeast, httpxを使うこともできます。

ducere serve --httpbeast
ducere serve --httpx

build

本番環境用にプロジェクトをビルドします。

Usage:
  build [optional-params] [args: string...]
Build for production.
Options:
  -h, --help                           print this cligen-erated help
  --help-syntax                        advanced: prepend,plurals,..
  --version          bool    false     print version
  -p=, --port=       int     5000      set port
  -w=, --workers=    uint    0         set workers
  -f, --force        bool    false     set force
  --httpbeast        bool    false     set httpbeast
  --httpx            bool    false     set httpx
  -a, --autoRestart  bool    false     set autoRestart
  -o=, --optimize=   string  "memory"  memory|speed

何もオプションを付けない場合、5000番ポートを使い、シングルスレッド・マルチプロセスで起動します。
ビルドするとstartServer.shというシェルスクリプトが作られるので、これを実行することでサーバーを起動します。

ducere build
./startServer.sh

> running 4 processes
> Basolato uses config file '/basolato/.env'
> Basolato uses config file '/basolato/.env'
> Basolato uses config file '/basolato/.env'
> Basolato uses config file '/basolato/.env'
> Basolato based on asynchttpserver listening on 0.0.0.0:5000
> Basolato based on asynchttpserver listening on 0.0.0.0:5000
> Basolato based on asynchttpserver listening on 0.0.0.0:5000
> Basolato based on asynchttpserver listening on 0.0.0.0:5000

デフォルトでは5000番ポートで起動します。-pのオプションを付けることで起動ポートを変更できます。

ducere build -p:8000

workersをセットすることで動かすプロセス数を設定できます。デフォルトは0で、ビルド環境のCPUのコア数分プロセスを作ります。

ducere build --workers=2
  or
ducere build -w=2

autoRestartをセットすることで、アプリケーションが何らかのエラーで落ちた時に自動で再起動するシェルを出力します。

# autoRestart = false
./main & ./main & ./main & ./main

# autoRestart = true
while [ 1 ]; do
  ./main & \
  ./main & \
  ./main & \
  ./main
done

ホストを設定するにはconfig.nimsの環境変数を編集してください。

putEnv("HOST", "127.0.0.2")

アプリケーションサーバーのコアをasynchttpserverの代わりにhttpbeast, httpxを使うこともできます。

ducere build --httpbeast
ducere build --httpx

optimizeオプションにはmemoryかspeedを選択することができます。
もしmemoryを選んだ時には ORC が使われ、メモリ消費が少なくなります。speedを選んだ時には markAndSweep が使われ、スループットがより多くなるようになります。

ducere build --optimize=memory
> nim c --mm:orc -d:useMalloc ... main

ducere build --optimize=speed
> nim c --mm:markAndSweep -d:useRealtimeGC ... main

migrate

ducere migrate --reset --seed

これはnim c -r database/migrations/migrateのエイリアスです

  • オプション
    • --reset テーブルを破棄してマイグレーションし直します
    • --seed マイグレーション実行後にdatabase/seeders/seedを実行します

make

予め雛形が書かれた新しいファイルを作ります。

config

DBコネクション、ログ、セッションタイムなどを定義するためのconfig.nims.envのファイルを作ります。

ducere make config

key

新しいSECRET_KEY.envの中に作ります

ducere make key

controller

コントローラーを作ります。

ducere make controller user
>> app/controllers/user_controller.nim

ducere make controller sample/user
>> app/controllers/sample/user_controller.nim

ducere make controller sample/sample2/user
>> app/controllers/sample/sample2/user_controller.nim

view

画面を描画するためのビューテンプレートを作ります。
layoutはコンポーネントのパーツ、pageは実際にコントローラーから呼び出されるビューです。

ducere make layout buttons/success_button
>> app/http/views/layouts/buttons/success_button_view.nim
ducere make page login
>> app/http/views/pages/login_view.nim

ビューを作るコマンドに --scf を付けると、SCFでのビューファイルが作られます。

ducere make layout buttons/success_button --scf
ducere make page login --scf

migration

マイグレーションファイルを作ります。

ducere make migration create_user
>> migrations/migration20200219134020create_user.nim

model

  • 最上位のドメインモデル(=集約)を作る

ドメインモデルを作ります。

ducere make model circle

in app/models

circle
├── circle_entity.nim
├── circle_repository_interface.nim
├── circle_service.nim
└── circle_value_object.nim

in app/repositories

circle
└── circle_rdb_repository.nim
  • 集約の子要素のドメインモデルを作る
ducere make model circle/user

in app/models

circle
├── circle_entity.nim
├── circle_repository_interface.nim
├── circle_service.nim
├── circle_value_objects.nim
└── user
    ├── user_entity.nim
    ├── user_service.nim
    └── user_value_objects.nim

value object

値オブジェクトの最小の雛形を追加します。

ducere make vo {引数1} {引数2}

引数1app/models内のモデル名です。
引数2はキャメルケースの値オブジェクトの名前です。

ducere make vo circle CircleName
>> add CircleName in app/models/circle/circle_value_objects.nim

ducere make vo circle/user UserName
>> add UserName in app/models/circle/user/user_value_objects.nim

usecase

ユースケースを作ります。
同時にクエリサービスとクエリインターフェースも作られます。

ducere make usecase {引数1} {引数2}

引数1app/usecases内のパッケージ名です。
引数2はキャメルケースのユースケースの名前です。

ducere make usecase sign signin
>> Updated app/di_container.nim
>> Created usecase in app/usecases/sign/signin/signin_usecase.nim
>> Created query in app/data_stores/queries/sign/signin_query.nim

Bash-completion

もし ducere でBashのタブ補完機能を使いたければ、この手順を実施してください。 まず、このリポジトリを任意の場所に clone します。

git clone https://github.com/itsumura-h/nim-basolato /path/to/nim-basolato

次に、以下のシェルを ~/.bashrc に追記します。

source /path/to/nim-basolato/completions/bash/ducere

あるいは、 bash-completion 用の所定の場所にファイルをコピーします。

sudo install -o root -g root -m 0644 /path/to/nim-basolato/completions/bash/ducere /usr/share/bash-completion/completions/ducere