Amon2のフレームワークを触ってみる
別に
Mojoliciousに飽きたわけではない。他のフレームワークにも触れておく必要があると感じだけ
なんかamon2-setup.pl が使用できるようになったみたい
$ amon2-setup.pl Usage: % amon2-setup.pl MyApp --flavor=Basic basic flavour (default) --flavor=Lite Amon2::Lite flavour (need to install) --flavor=Minimum minimalistic flavour for benchmarking --flavor=Standalone CPAN uploadable web application(EXPERIMENTAL) --vc=Git setup the git repository (default) --list-flavors (or -l) Shows the list of flavors installed --help Show this help $
最初はベーシックで作成
$ amon2-setup.pl MyApp1 --flavor=Basic -- Running flavor: Basic -- [main] Loading asset: jQuery [main] Loading asset: Bootstrap [main] Loading asset: ES5Shim [main] Loading asset: MicroTemplateJS [main] Loading asset: StrftimeJS [main] Loading asset: SprintfJS [main] Loading asset: MicroLocationJS [main] Loading asset: MicroDispatcherJS [main] Loading asset: XSRFTokenJS [Flavor::Basic] writing tmpl/index.tx [Flavor::Basic] writing tmpl/include/layout.tx [Flavor::Basic] writing tmpl/include/pager.tx [Flavor::Basic] writing lib/MyApp1.pm [Flavor::Basic] writing lib/MyApp1/Web.pm [Flavor::Basic] writing lib/MyApp1/Web/Plugin/Session.pm [Flavor::Basic] writing lib/MyApp1/Web/Dispatcher.pm [Flavor::Basic] writing lib/MyApp1/Web/View.pm [Flavor::Basic] writing lib/MyApp1/Web/ViewFunctions.pm [Flavor::Basic] writing lib/MyApp1/DB.pm [Flavor::Basic] writing lib/MyApp1/DB/Schema.pm [Flavor::Basic] writing lib/MyApp1/DB/Row.pm [Flavor::Basic] writing script/myapp1-server [Flavor::Basic] writing Build.PL [Flavor::Basic] writing minil.toml [Flavor::Basic] writing builder/MyBuilder.pm [Flavor::Basic] writing cpanfile [Flavor::Basic] writing static//js/jquery-2.1.1.min.js [Flavor::Basic] writing static//bootstrap/fonts/glyphicons-halflings-regular.ttf [Flavor::Basic] writing static//bootstrap/css/bootstrap-theme.css.map [Flavor::Basic] writing static//bootstrap/css/bootstrap-theme.min.css [Flavor::Basic] writing static//bootstrap/js/bootstrap.js [Flavor::Basic] writing static//bootstrap/fonts/glyphicons-halflings-regular.woff [Flavor::Basic] writing static//bootstrap/js/bootstrap.min.js [Flavor::Basic] writing static//bootstrap/css/bootstrap-theme.css [Flavor::Basic] writing static//bootstrap/css/bootstrap.min.css [Flavor::Basic] writing static//bootstrap/fonts/glyphicons-halflings-regular.svg [Flavor::Basic] writing static//bootstrap/css/bootstrap.css [Flavor::Basic] writing static//bootstrap/fonts/glyphicons-halflings-regular.eot [Flavor::Basic] writing static//bootstrap/css/bootstrap.css.map [Flavor::Basic] writing static//js/es5-shim.min.js [Flavor::Basic] writing static//js/micro_template.js [Flavor::Basic] writing static//js/strftime.js [Flavor::Basic] writing static//js/sprintf.js [Flavor::Basic] writing static//js/micro-location.js [Flavor::Basic] writing static//js/micro_dispatcher.js [Flavor::Basic] writing static//js/xsrf-token.js [Flavor::Basic] writing static/img/.gitignore [Flavor::Basic] writing static/robots.txt [Flavor::Basic] writing static/js/main.js [Flavor::Basic] writing static/css/main.css [Flavor::Basic] writing db/.gitignore [Flavor::Basic] writing config/development.pl [Flavor::Basic] writing config/production.pl [Flavor::Basic] writing config/test.pl [Flavor::Basic] writing sql/mysql.sql [Flavor::Basic] writing sql/sqlite.sql [Flavor::Basic] writing t/Util.pm [Flavor::Basic] writing t/00_compile.t [Flavor::Basic] writing t/01_root.t [Flavor::Basic] writing t/02_mech.t [Flavor::Basic] writing t/03_assets.t [Flavor::Basic] writing t/06_jshint.t [Flavor::Basic] writing xt/01_pod.t [Flavor::Basic] writing xt/02_perlcritic.t [Flavor::Basic] writing .gitignore [Flavor::Basic] writing .proverc [Flavor::Basic] writing static/500.html [Flavor::Basic] writing static/503.html [Flavor::Basic] writing static/502.html [Flavor::Basic] writing static/504.html [Flavor::Basic] writing static/404.html Initialized empty Git repository in /vagrant/perl/amon2/MyApp1/.git/ [master (root-commit) b0548a1] initial import 62 files changed, 10636 insertions(+) create mode 100644 .gitignore create mode 100644 .proverc create mode 100644 Build.PL create mode 100644 builder/MyBuilder.pm create mode 100644 config/development.pl create mode 100644 config/production.pl create mode 100644 config/test.pl create mode 100644 cpanfile create mode 100644 db/.gitignore create mode 100644 lib/MyApp1.pm create mode 100644 lib/MyApp1/DB.pm create mode 100644 lib/MyApp1/DB/Row.pm create mode 100644 lib/MyApp1/DB/Schema.pm create mode 100644 lib/MyApp1/Web.pm create mode 100644 lib/MyApp1/Web/Dispatcher.pm create mode 100644 lib/MyApp1/Web/Plugin/Session.pm create mode 100644 lib/MyApp1/Web/View.pm create mode 100644 lib/MyApp1/Web/ViewFunctions.pm create mode 100644 minil.toml create mode 100644 script/myapp1-server create mode 100644 sql/mysql.sql create mode 100644 sql/sqlite.sql create mode 100644 static/404.html create mode 100644 static/500.html create mode 100644 static/502.html create mode 100644 static/503.html create mode 100644 static/504.html create mode 100644 static/bootstrap/css/bootstrap-theme.css create mode 100644 static/bootstrap/css/bootstrap-theme.css.map create mode 100644 static/bootstrap/css/bootstrap-theme.min.css create mode 100644 static/bootstrap/css/bootstrap.css create mode 100644 static/bootstrap/css/bootstrap.css.map create mode 100644 static/bootstrap/css/bootstrap.min.css create mode 100644 static/bootstrap/fonts/glyphicons-halflings-regular.eot create mode 100644 static/bootstrap/fonts/glyphicons-halflings-regular.svg create mode 100644 static/bootstrap/fonts/glyphicons-halflings-regular.ttf create mode 100644 static/bootstrap/fonts/glyphicons-halflings-regular.woff create mode 100644 static/bootstrap/js/bootstrap.js create mode 100644 static/bootstrap/js/bootstrap.min.js create mode 100644 static/css/main.css create mode 100644 static/img/.gitignore create mode 100644 static/js/es5-shim.min.js create mode 100644 static/js/jquery-2.1.1.min.js create mode 100644 static/js/main.js create mode 100644 static/js/micro-location.js create mode 100644 static/js/micro_dispatcher.js create mode 100644 static/js/micro_template.js create mode 100644 static/js/sprintf.js create mode 100644 static/js/strftime.js create mode 100644 static/js/xsrf-token.js create mode 100644 static/robots.txt create mode 100644 t/00_compile.t create mode 100644 t/01_root.t create mode 100644 t/02_mech.t create mode 100644 t/03_assets.t create mode 100644 t/06_jshint.t create mode 100644 t/Util.pm create mode 100644 tmpl/include/layout.tx create mode 100644 tmpl/include/pager.tx create mode 100644 tmpl/index.tx create mode 100644 xt/01_pod.t create mode 100644 xt/02_perlcritic.t -------------------------------------------------------------- Setup script was done! You are ready to run the skelton. You need to install the dependencies by: > carton install And then, run your application server: > carton exec perl -Ilib script/myapp1-server -------------------------------------------------------------- $
不足するモジュールをインストール
cd MyApp1/ carton install
起動
$ carton exec perl -Ilib script/myapp1-server MyApp1: http://127.0.0.1:5000/
↓
※起動しない?
IPが異なるからプライベートIP指定したけどダメらしい
のでIPを変更する
script/myapp1-server
#!perl use strict; use warnings; use utf8; use File::Spec; use File::Basename; use lib File::Spec->catdir(dirname(__FILE__), '../lib'); use Plack::Builder; use MyApp1::Web; use MyApp1; use URI::Escape; use File::Path (); my $app = builder { enable 'Plack::Middleware::Static', path => qr{^(?:/static/)}, root => File::Spec->catdir(dirname(__FILE__), '..'); enable 'Plack::Middleware::Static', path => qr{^(?:/robots\.txt|/favicon\.ico)$}, root => File::Spec->catdir(dirname(__FILE__), '..', 'static'); enable 'Plack::Middleware::ReverseProxy'; MyApp1::Web->to_app(); }; unless (caller) { my $port = 5000; # my $host = '127.0.0.1'; my $host = '192.168.33.10'; my $max_workers = 4; require Getopt::Long; require Plack::Loader; my $p = Getopt::Long::Parser->new( config => [qw(posix_default no_ignore_case auto_help)] ); $p->getoptions( 'p|port=i' => \$port, 'host=s' => \$host, 'max-workers=i' => \$max_workers, 'version!' => \my $version, 'c|config=s' => \my $config_file, ); if ($version) { print "MyApp1: $MyApp1::VERSION\n"; exit 0; } if ($config_file) { my $config = do $config_file; Carp::croak("$config_file: $@") if $@; Carp::croak("$config_file: $!") unless defined $config; unless ( ref($config) eq 'HASH' ) { Carp::croak("$config_file does not return HashRef."); } no warnings 'redefine'; no warnings 'once'; *MyApp1::load_config = sub { $config } } print "MyApp1: http://${host}:${port}/\n"; my $loader = Plack::Loader->load('Starlet', port => $port, host => $host, max_workers => $max_workers, ); return $loader->run($app); } return $app;
再度起動
$ carton exec perl -Ilib script/myapp1-server MyApp1: http://192.168.33.10:5000/
↓
ちゃんとでた
出ないからちょっと焦りました(^_^;)