Skip to content

Latest commit

 

History

History
319 lines (257 loc) · 7.7 KB

ducere.md

File metadata and controls

319 lines (257 loc) · 7.7 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

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

ducere serve

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

ducere serve -p:8000

ホストを設定するには.envの環境変数に追記してください。

HOST="127.0.0.2"

build

本番環境用にプロジェクトをビルドします。 何もオプションを付けない場合、5000番ポートを使い、実行したコンピューターのコア数分マルチスレッドで起動するようになっています。

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=, --ports=    string  "5000"  set ports
  -t=, --threads=  string  "off"   set threads
ducere build
./main
>> Starting 4 threads
>> Listening on 0.0.0.0:5000

複数のポートを指定した場合、シングルスレッドで、それぞれのポートを使って起動する実行バイナリが複数出力されます。

マルチスレッドでの起動はバグの危険性があります。そのためシングルスレッドで起動し、Nginxでロードバランシングさせることを推奨しています。

ducere build -p:5000,5001,5002
>> generated main5000, main5001, main5002

./main5000
>> Starting 1 thread
>> Listening on 0.0.0.0:5000

./main5001
>> Starting 1 thread
>> Listening on 0.0.0.0:5001

以下は本番環境で動かすためのNginxのサンプルです。

autorestart.sh

ducere build -p:5000,5001,5002,5003
while [ 1 ]; do
  ./main5000 & \
  ./main5001 & \
  ./main5002 & \
  ./main5003
done

nginx.conf

worker_processes  auto;
worker_rlimit_nofile 150000;

events {
   worker_connections  65535;
   multi_accept on;
   use epoll;
}

http {
   access_log  /var/log/nginx/access.log  main;
   error_log   /var/log/nginx/error.log  info;
   tcp_nopush  on;

   upstream basolato {
      least_conn;
      server      127.0.0.1:5000;
      server      127.0.0.1:5001;
      server      127.0.0.1:5002;
      server      127.0.0.1:5003;
   }

   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   server {
      listen 443;
      ssl on;
      server_name www.example.com;
      ssl_certificate /etc/pki/tls/certs/example_com_combined.crt; # path to certification
      ssl_certificate_key /etc/pki/tls/private/example_com.key; # path to private key

      location / {
         proxy_pass http://basolato;
      }
   }
}

migrate

ducere migrate

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

clear

ducere migrate clear

データベースを削除します。削除するデータベースは.env.localを読みます。

fresh

ducere migrate fresh

データベースを削除し、マイグレーションを実行します。対象となるデータベースは.env.localを読みます。

make

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

config

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

ducere make config

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
>> resources/layouts/buttons/success_button_view.nim
ducere make page login
>> resources/pages/login_view.nim

migration

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

ducere make migration create_user
>> migrations/migration20200219134020create_user.nim

model

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

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

ducere make model circle

in app/core/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/core/models

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

usecase

ユースケースを作ります。

ducere make usecase login
>> app/domain/usecases/login_usecase.nim

value object

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

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

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

ducere make valueobject UserName user
>> add UserName in app/domain/models/user/user_value_objects.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