Easy boilerplate utilities for Rust http services which use async-std, Tide, Surf, and friends.
This crate is intentionally somewhat prescrptive in how it templates a service and the interaction with add-on features such as Postgres (via SQLx).
Scroll to the bottom for API Reference
main
setup via preroll::main!
, with optional features automatically configured.preroll::prelude::*;
with all extension traits.Add-on features must be enabled via cargo features, e.g.
toml
[dependencies.preroll]
version = "0.1"
features = ["honeycomb", "postgres"]
"honeycomb"
: Enables tracing to [honeycomb.io].
HONEYCOMBIO_WRITE_KEY
(required).TRACELEVEL
, sets the tracing level filter, defaults to info
.{service_name}-{environment}
.
service_name
is from preroll::main!("service_name", ...)
.environment
is from ENVIRONMENT
, or defaults to "development"
."postgres"
: Enables a postgres connection pool with transactions.
PGURL
, which should be a properly formatted postgres://
database url.
"postgres://localhost/{service_name}"
(default postgres port).service_name
is from preroll::main!("service_name", ...)
.PGMAXCONNECTIONS
, default 5 connections.PostgresRequestExt
][prelude::PostgresRequestExt] and [test_utils::create_client_and_postgres
][]."panic-on-error"
: Makes the response logger [panic][] on error rather than log.
--release
compilation.The following environment variables are read during preroll::main!
:
- ENVIRONMENT
: If this starts with prod
, load the production-mode JSON logger, avoid .env
.
- FORCE_DOTENV
: Override production-mode, force-load environment from .env
.
- HOST
: Sets the hostname that this service will listen on. Defaults to "127.0.0.1"
.
- LOGLEVEL
: Set the logger's level filter, defaults to info
in production-mode, debug
in development-mode.
- PORT
: Sets the port that this service will listen on. Defaults to 8080
.
```rust use std::sync::Arc;
use tide::{Request, Server};
struct AppState { greeting: &'static str, }
type AppRequest = Request
async fn setupappstate() -> preroll::setup::Result
fn setup_routes(server: &mut Server
preroll::main!("hello-world", setupappstate, setup_routes); ```
Licensed under the BlueOak Model License 1.0.0 — Contributions via DCO 1.1