#!perl use 5.010; use strict; use warnings; use lib "../lib"; use App::AutoCRUD; use Path::Tiny; use YAML::Any qw/LoadFile/; # need absolute path to this dir (because we don't know from which # current dir this psgi is run) my $this_dir = path(__FILE__)->absolute->parent; # load Chinook config my $config_file = $this_dir->child(Chinook => "config_chinook.yaml")->canonpath; my $config = LoadFile $config_file; # fix sqlite file to be an absolute path $config->{datasources}{Chinook}{dbh}{connect}[0] =~ s[dbname=(.*)] ["dbname=".$this_dir->child(Chinook => $1)->canonpath]e; # load Sakila config and merge with chinook $config_file = $this_dir->child(Sakila => "config_sakila.yaml")->canonpath; my $sakila_config = LoadFile $config_file; $config->{datasources}{Sakila} = $sakila_config->{datasources}{Sakila}; # fix sqlite file to be an absolute path $config->{datasources}{Sakila}{dbh}{connect}[0] =~ s[dbname=(.*)] ["dbname=".$this_dir->child(Sakila => $1)->canonpath]e; # create app my $crud = App::AutoCRUD->new(config => $config); my $app = $crud->to_app; # Allow this script to be run also directly (without 'plackup'), so that # it can be launched from Emacs unless (caller) { require Plack::Runner; my $runner = Plack::Runner->new; $runner->parse_options(@ARGV); return $runner->run($app); } return $app;