From 55c0ac150b976c1409e9b9091f52243be9566b9a Mon Sep 17 00:00:00 2001 From: David Rousselie Date: Sun, 3 Mar 2019 14:05:50 +0100 Subject: [PATCH] Add support for CleverCloud environment variables --- Cargo.lock | 2 ++ post_build.sh | 4 ++++ src/bin/callmeback.rs | 15 ++++++++++++--- src/db.rs | 8 ++++---- 4 files changed, 22 insertions(+), 7 deletions(-) create mode 100755 post_build.sh diff --git a/Cargo.lock b/Cargo.lock index 1e272a0..6969e04 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,3 +1,5 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. [[package]] name = "actix" version = "0.7.9" diff --git a/post_build.sh b/post_build.sh new file mode 100755 index 0000000..e49fe27 --- /dev/null +++ b/post_build.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +[ -x ./bin/diesel ] || cargo install diesel_cli --no-default-features --features postgres --root . +./bin/diesel setup --database-url "$POSTGRESQL_ADDON_URI" diff --git a/src/bin/callmeback.rs b/src/bin/callmeback.rs index 6618c1a..4ee0f22 100644 --- a/src/bin/callmeback.rs +++ b/src/bin/callmeback.rs @@ -15,12 +15,21 @@ pub fn main() { env_logger::init(); dotenv().ok(); - let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set"); + let database_url = env::var("POSTGRESQL_ADDON_URI") + .or(env::var("DATABASE_URL")) + .expect("DATABASE_URL must be set"); + let port = env::var("PORT").unwrap_or("3000".to_string()); let mut listenfd = ListenFd::from_env(); let sys = actix::System::new("callmeback"); - let addr = SyncArbiter::start(3, move || DbExecutor::new(&database_url)); + let addr = SyncArbiter::start( + env::var("DATABASE_CONNECTION_COUNT") + .unwrap_or("1".to_string()) + .parse() + .unwrap_or(1), + move || DbExecutor::new(&database_url), + ); let mut server = HttpServer::new(move || { callmeback::configure_app(App::with_state(callmeback::AppState { db: addr.clone() })) @@ -31,7 +40,7 @@ pub fn main() { server = if let Some(l) = listenfd.take_tcp_listener(0).unwrap() { server.listen(l) } else { - server.bind("127.0.0.1:3000").unwrap() + server.bind(format!("0.0.0.0:{}", port)).unwrap() }; server.start(); diff --git a/src/db.rs b/src/db.rs index 43ab0b4..3180b15 100644 --- a/src/db.rs +++ b/src/db.rs @@ -10,10 +10,10 @@ impl Actor for DbExecutor { impl DbExecutor { pub fn new(database_url: &str) -> Self { - DbExecutor( - PgConnection::establish(database_url) - .unwrap_or_else(|_| panic!("Error connecting to {}", database_url)), - ) + DbExecutor(match PgConnection::establish(database_url) { + Err(e) => panic!("Error connecting to {}: {}", database_url, e), + Ok(c) => c, + }) } }