v0.4.0
Features
- Services can opt into an AWS RDS Postgres, MySql or MariaDB instance rather than the previously shared Postgres instance (#180)
Improvements
- No longer need to put
cdylib
inCargo.toml
(#212) cargo shuttle
command can now be run in child directories of a project (#203 Thanks @ivancernja)- Invalid API keys for
cargo shuttle
now have a better message for fixing the problem (#217 Thanks @Xavientois) - Improved error when failing to parse
shuttle_service
version (#219 Thanks @jmwill86) - Improved local dev experience and building (#226 #234 #244)
- A rewrite of
shuttle_service::Service
to make it easier for users to implement custom services (#225) cargo shuttle
now fails with exit code 1 to improve its use in scripting (#166)- Improved docs (#243 #245 Thanks @lilianmoraru and @Xavientois)
- Started switching to CircleCI
Breaking changes
Any service that used the (shared Postgres) PgPool
would have had the following main function:
async fn rocket(pool: PgPool) -> shuttle_service::ShuttleRocket {
// Create service here
}
And a sqlx-postgres
feature for shuttle-service
. With the support of more databases, this PgPool
now needs to explicitly define what kind of database instance it will connect to using argument attributes. This can be done by adding #[shared::Postgres]
to the attribute:
async fn rocket(#[shared::Postgres] pool: PgPool) -> shuttle_service::ShuttleRocket {
// Create service here
}