From d4e8221b4fa44b6bf2d598b702d995ea79dfa24e Mon Sep 17 00:00:00 2001 From: Kevin J Hoerr Date: Sun, 26 Aug 2018 21:25:43 -0400 Subject: Enable error chaining with error definitions file (empty) --- src/bin/august-offensive.rs | 45 ------------------------------ src/errors.rs | 2 ++ src/main.rs | 67 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 45 deletions(-) delete mode 100644 src/bin/august-offensive.rs create mode 100644 src/errors.rs create mode 100644 src/main.rs (limited to 'src') diff --git a/src/bin/august-offensive.rs b/src/bin/august-offensive.rs deleted file mode 100644 index 77ca2f6..0000000 --- a/src/bin/august-offensive.rs +++ /dev/null @@ -1,45 +0,0 @@ -extern crate actix; -extern crate actix_web; -extern crate env_logger; -extern crate dotenv; -extern crate diesel; - -use actix_web::{middleware, server, App, HttpRequest}; -use diesel::prelude::*; -use diesel::pg::PgConnection; -use dotenv::dotenv; -use std::env; - -fn index(_req: &HttpRequest) -> &'static str { - "Hello, world!" -} - -// TODO describe change of direction in README -// TODO implement error-chain -// TODO match 0.1.0 functionality -fn main() { - dotenv().ok(); - let db_url = env::var("DATABASE_URL") - .expect("DATABASE_URL must be set"); - let bind_address = env::var("BIND_ADDRESS") - .expect("BIND_ADDRESS must be set"); - - env::set_var("RUST_LOG", "actix_web=info"); - env_logger::init(); - let sys = actix::System::new("hello-world"); - - PgConnection::establish(&db_url) - .expect(&format!("Error connecting to {}", db_url)); - - server::new(|| { - App::new() - .middleware(middleware::Logger::default()) - .resource("/index.html", |r| r.f(index)) - .resource("/", |r| r.f(index)) - }).bind(&bind_address) - .unwrap() - .start(); - - println!("Started http server: {}", bind_address); - let _ = sys.run(); -} diff --git a/src/errors.rs b/src/errors.rs new file mode 100644 index 0000000..e8c5bb5 --- /dev/null +++ b/src/errors.rs @@ -0,0 +1,2 @@ +// Error definitions for whole project +error_chain! { } \ No newline at end of file diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..4c2c020 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,67 @@ +// specify recurse depth for error_chain +#![recursion_limit = "1024"] + +extern crate dotenv; +#[macro_use] +extern crate error_chain; +extern crate actix; +extern crate actix_web; +extern crate env_logger; +extern crate diesel; + +mod errors; + +use actix_web::{middleware, server, App, HttpRequest}; +use diesel::prelude::*; +use diesel::pg::PgConnection; +use dotenv::dotenv; +use std::env; +use errors::*; + +fn main() { + if let Err(ref e) = run() { + println!("error: {}", e); + + for e in e.iter().skip(1) { + println!("caused by: {}", e); + } + + if let Some(backtrace) = e.backtrace() { + println!("backtrace: {:?}", backtrace); + } + + ::std::process::exit(1); + } +} + +fn run() -> Result<()> { + dotenv().ok(); + let db_url = env::var("DATABASE_URL") + .expect("DATABASE_URL must be set"); + let bind_address = env::var("BIND_ADDRESS") + .expect("BIND_ADDRESS must be set"); + + env::set_var("RUST_LOG", "actix_web=info"); + env_logger::init(); + let sys = actix::System::new("august-offensive"); + + PgConnection::establish(&db_url) + .expect(&format!("Error connecting to {}", db_url)); + + server::new(|| { + App::new() + .middleware(middleware::Logger::default()) + .resource("/index.html", |r| r.f(index)) + .resource("/", |r| r.f(index)) + }).bind(&bind_address) + .unwrap() + .start(); + + println!("Started http server: {}", bind_address); + let _ = sys.run(); + Ok(()) +} + +fn index(_req: &HttpRequest) -> &'static str { + "Hello, world!" +} -- cgit