Logicky Blog

Logickyの開発ブログです

Rocket

Rust(Rocket)でtracingを使った詳細なエラーログ出力とエラーハンドリングの改善をしてみました

Rust の Web フレームワークのRocketで作っている Web アプリで、tracing を使った詳細なエラーログ出力とエラーハンドリングの改善をしてみました。 前提 クリーンアーキテクチャっぽい構成を想定しています。controller, use_case, repository があります…

Rust(Rocket)でsqlxを使って並列的にDBの統合テストをする

先日この投稿を書いたのですが、Rocket と sqlx でクリーンアーキテクチャっぽくしたものの、トランザクションをうまく使えなくて、都度 truncate を実行する直列的なテストをしていましたが、超簡単にトランザクションが使えることにやっと気づいたので、並…

RustのRocketとSqlxでクリーンアーキテクチャっぽいやつを作ってみました

Rust の Rocket と sqlx でクリーンアーキテクチャっぽくして、ディレクトリとか モジュールもなるべくいい感じに分けつつ、テストもしやすい・モックも作りやすい状態を、頑張って作ってみました。 以前 Axum でも同じようなことをやりました 以前 Axum で…

Rocketでデータベース設定を環境によって切り替える

設定ファイルと環境変数 ここに書いてありますが、Rocket は Rocket.toml というファイルで設定を管理できます。また、環境変数もROCKET_xxxxという形式にすることで、Rocket.toml の値を上書きすることができます。そして、環境変数にROCKET_PROFILE=devな…

RustのRocketでエラーハンドリング

Rocketで controller のハンドラ関数でリクエストを受けて、use_case や repository で詳細の処理を実行するようになっています。use_case, repository で発生したエラー毎にレスポンス時のステータスコードを決めないといけないです。 ですので、use_case, …

RustのRocketのメモ(リクエスト)

Rust のRocketのリクエスト関連のメモです。ここを読みながら確認してみたこと等をメモします。 リクエスト パラメータの型 下記のようにage:u8となっている場合、/bob/32/trueとかだと OK。でも/bob/a/trueとか u8 型を求めているのに文字列とかだと 404 エ…

RustのRocketアプリをrenderにデプロイする

下記のような超シンプルな Rocket アプリを render にデプロイしてみます。 #[macro_use] extern crate rocket; #[get("/")] fn index() -> &'static str { "Hello, world!" } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![index]) } …