media-collection-crud/src/main.rs

49 lines
1.0 KiB
Rust

use env_logger;
use handlebars::Handlebars;
use handlebars_iron::{DirectorySource, HandlebarsEngine};
use iron::prelude::Iron;
use std::error::Error;
use std::sync::Arc;
use media_collection_crud::{chain, db};
fn template_engine() -> Arc<HandlebarsEngine> {
let views_ext = ".hbs";
let views_path = "./src/views";
let hbs = Handlebars::new();
let mut hbse = HandlebarsEngine::from(hbs);
hbse.add(Box::new(
DirectorySource::new(views_path, views_ext)
));
if let Err(r) = hbse.reload() {
panic!("{:?}", r.description());
}
let hbse_ref = Arc::new(hbse);
if cfg!(debug_assertions) {
println!("Templates are being watched.");
use handlebars_iron::Watchable;
hbse_ref.watch(views_path);
}
hbse_ref
}
fn main() {
env_logger::init();
db::establish_connection();
let port = 8000;
let bind_addr = format!("localhost:{}", port);
let mut chain = chain::init();
let templating_engine = template_engine();
chain.link_after(templating_engine);
Iron::new(chain)
.http(bind_addr.as_str())
.unwrap();
}