コンテンツ
ducere
はRuby on Railsにおけるrake
、Laravelにおけるphp artisan
のようなBasolatoフレームワークのCLIツールです。
新しくプロジェクトを作ります
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
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"
本番環境用にプロジェクトをビルドします。 何もオプションを付けない場合、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;
}
}
}
ducere migrate
これはnim c -r migrations/migrate
のエイリアスです
ducere migrate clear
データベースを削除します。削除するデータベースは.env.local
を読みます。
ducere migrate fresh
データベースを削除し、マイグレーションを実行します。対象となるデータベースは.env.local
を読みます。
予め雛形が書かれた新しいファイルを作ります。
DBコネクション、ログ、セッションタイムなどを定義するためのconfig.nims
、.env
のファイルを作ります。
ducere make config
コントローラーを作ります。
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
画面を描画するためのビューテンプレートを作ります。
layout
はコンポーネントのパーツ、page
は実際にコントローラーから呼び出されるビューです。
ducere make layout buttons/success_button
>> resources/layouts/buttons/success_button_view.nim
ducere make page login
>> resources/pages/login_view.nim
マイグレーションファイルを作ります。
ducere make migration create_user
>> migrations/migration20200219134020create_user.nim
ドメインモデルを作ります。
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
ユースケースを作ります。
ducere make usecase login
>> app/domain/usecases/login_usecase.nim
値オブジェクトの最小の雛形を追加します。
ducere make valueobject {引数1} {引数2}
引数1
はキャメルケースの値オブジェクトの名前です。
引数2
はapp/domain/models
内の集約名です。
ducere make valueobject UserName user
>> add UserName in app/domain/models/user/user_value_objects.nim
もし 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