先日、列車を走らせましたので解説していきます。
前提
・Rust実行環境があること
https://www.rust-lang.org/ja/learn/get-started
Rustフレームワーク「Loco」とは?
公式サイト(https://loco.rs/)によると
「サイドプロジェクトやスタートアップのためのRustの一人用フレームワーク」
と定義されています。
高速でRust APIを立ち上げるためのサーバーサイドフレームワークと言えるでしょう。
うちのチームはクリエイター主体でエンジニアは僕しかいないので最適かもしれません。
以下が挙げられている特徴になります。
バッテリー付属
1人チームを強化します。サービス、データ、メール、バックグラウンドジョブ、タスク、それを動かすCLI、すべてが含まれています。
Railsは素晴らしい
LocoはRailsに従っています。Railsのコンセプトは、最新のRust開発に注意深く適応されています。
自信を持って提供する
一人で開発する人のために最適化されています。複雑な作業や大掛かりな作業は必要ありません。
必要に応じて拡張
必要なときに Loco の一部だけを分割、再構成、または使用できます。苦痛を伴うことなく構築し、成長させることができます。
段階的に構築
必要なものを使う。サービス、データベース付きサービス、バックグラウンドジョブワーカー、タスク。
すべてテスト駆動
わずかな労力でアプリをテストできます。モデル、コントローラ、バックグラウンドジョブなど、自信を持って迅速に出荷。
立ち上げ
cliをインストールします。
$ cargo install loco-cli
$ cargo install sea-orm-cli
新規アプリケーションを作成します。
$ loco new
✔ ❯ App name? · myapp
? ❯ What would you like to build? ›
lightweight-service (minimal, only controllers and views)
Rest API (with DB and user auth)
❯ Saas app (with DB and user auth)
🚂 Loco app generated successfully in:
myapp
ポスグレを立ち上げます。
$ docker run -d -p 5432:5432 -e POSTGRES_USER=loco -e POSTGRES_DB=myapp_development -e POSTGRES_PASSWORD="loco" postgres:15.3-alpine
error returned from database: role “loco” does not exist
となった場合は、別のポスグレのdocker image, container, volumeなどを削除してみてください。
myappに移動します。
$ cd myapp
立ち上げます。
$ cargo loco start
Finished dev [unoptimized + debuginfo] target(s) in 21.63s
Running `target/debug/myapp start`
:
:
:
controller/app_routes.rs:203: [Middleware] Adding log trace id
▄ ▀
▀ ▄
▄ ▀ ▄ ▄ ▄▀
▄ ▀▄▄
▄ ▀ ▀ ▀▄▀█▄
▀█▄
▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄ ▀▀█
██████ █████ ███ █████ ███ █████ ███ ▀█
██████ █████ ███ █████ ▀▀▀ █████ ███ ▄█▄
██████ █████ ███ █████ █████ ███ ████▄
██████ █████ ███ █████ ▄▄▄ █████ ███ █████
██████ █████ ███ ████ ███ █████ ███ ████▀
▀▀▀██▄ ▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀ ██▀
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
started on port 3000