It would be also interesting to see some metrics, but I do really like the idea of a portable application between GAE and bare metal.
wmn@wmn-glaptop ~/code/src/github.com/eMxyzptlk/gondola_app % goapp version
go version go1.2.1 (appengine-1.9.14) linux/amd64
wmn@wmn-glaptop ~/code/src/github.com/eMxyzptlk % gondola new -gae gondola_app
[D] 2014/11/05 12:54:47 writing file gondola_app/app.go
[D] 2014/11/05 12:54:47 writing file gondola_app/app_test.go
[D] 2014/11/05 12:54:47 creating directory gondola_app/assets
[D] 2014/11/05 12:54:47 writing file gondola_app/handlers.go
[D] 2014/11/05 12:54:47 creating directory gondola_app/tmpl
[D] 2014/11/05 12:54:47 writing file gondola_app/app.conf
[D] 2014/11/05 12:54:47 writing file gondola_app/app.yaml
[D] 2014/11/05 12:54:47 writing file gondola_app/cron.yaml
[D] 2014/11/05 12:54:47 writing file gondola_app/dev.conf
[D] 2014/11/05 12:54:47 writing file gondola_app/main.go
[D] 2014/11/05 12:54:47 writing file gondola_app/main_appengine.go
[D] 2014/11/05 12:54:47 writing file gondola_app/app.conf
[D] 2014/11/05 12:54:47 writing file gondola_app/dev.conf
[D] 2014/11/05 12:54:47 writing file gondola_app/main.go
wmn@wmn-glaptop ~/code/src/github.com/eMxyzptlk % cd gondola_app
wmn@wmn-glaptop ~/code/src/github.com/eMxyzptlk/gondola_app % gondola gae-dev
[D] 2014/11/05 12:54:59 starting App Engine development server - press Control+C to stop
[D] 2014/11/05 12:54:59 compiling app assets
# github.com/eMxyzptlk/gondola_app
./main_appengine.go:36: main redeclared in this block
previous declaration at ./main.go:3
error running command gae-dev: exit status 2
wmn@wmn-glaptop ~/code/src/github.com/eMxyzptlk/gondola_app % rm main.go
wmn@wmn-glaptop ~/code/src/github.com/eMxyzptlk/gondola_app % gondola gae-test
[D] 2014/11/05 12:55:10 starting App Engine tests
INFO 2014-11-05 20:55:11,578 devappserver2.py:741] Skipping SDK update check.
INFO 2014-11-05 20:55:11,600 api_server.py:172] Starting API server at: http://localhost:41295
INFO 2014-11-05 20:55:12,401 dispatcher.py:186] Starting module "default" running at: http://localhost:8080
INFO 2014-11-05 20:55:12,402 admin_server.py:118] Starting admin server at: http://localhost:8000
2014/11/05 12:55:14 appengine: not running under devappserver2; using some default configuration
flag provided but not defined: -L
Usage of /tmp/go-build290760009/github.com/eMxyzptlk/gondola_app/_test/gondola_app.test:
-H="": Host to run the test against
-addr_api="": deprecated
-addr_http="": deprecated
-admin-email="": When running in non-debug mode, any error messages will be emailed to this adddress
-blobstore="": Default blobstore, returned by Context.Blobstore()
-cache="": Default cache, returned by Context.Cache()
-config="/home/wmn/code/src/github.com/eMxyzptlk/gondola_app/app.conf": Config file name
-database="": Default database to use, used by Context.Orm()
-debug=false: Enable app debug mode. This causes runtime errors to generate a detailed error page
-default-from="": Default From address when sending emails
-encryption-key="": Key used for encryption (e.g. encrypted cookies)
-language="": Set the default language for translating strings
-log-debug=false:
-mail-server="localhost:25": Default mail server used by gnd.la/net/mail
-port=8888: Port to listen on
-secret="": Secret used for, among other things, hashing cookies
-template-debug=false: Enable template debug mode. This disables asset bundling and template caching
-test.bench="": regular expression to select benchmarks to run
-test.benchmem=false: print memory allocations for benchmarks
-test.benchtime=1s: approximate run time for each benchmark
-test.blockprofile="": write a goroutine blocking profile to the named file after execution
-test.blockprofilerate=1: if >= 0, calls runtime.SetBlockProfileRate()
-test.coverprofile="": write a coverage profile to the named file after execution
-test.cpu="": comma-separated list of number of CPUs to use for each test
-test.cpuprofile="": write a cpu profile to the named file during execution
-test.memprofile="": write a memory profile to the named file after execution
-test.memprofilerate=0: if >=0, sets runtime.MemProfileRate
-test.outputdir="": directory in which to write profiles
-test.parallel=1: maximum test parallelism
-test.run="": regular expression to select tests and examples to run
-test.short=false: run smaller test suite to save time
-test.timeout=0: if positive, sets an aggregate time limit for all tests
-test.v=false: verbose: print additional output
Available commands:
cat-file
make-assets
Type /tmp/go-build290760009/github.com/eMxyzptlk/gondola_app/_test/gondola_app.test help for details.
exit status 2
FAIL github.com/eMxyzptlk/gondola_app 0.081s
goapp: caught SIGINT, waiting for dev_appserver.py to shut down
INFO 2014-11-05 20:55:14,192 shutdown.py:45] Shutting down.
INFO 2014-11-05 20:55:14,192 api_server.py:588] Applying all pending transactions and saving the datastore
INFO 2014-11-05 20:55:14,193 api_server.py:591] Saving search indexes