Go言語のWebフレームワーク「Revel」でゲストブックアプリケーションを作ってみた

The Revel Web Framework for Go


インストール

$ go get github.com/robfig/revel/revel

コマンドラインツール

$ revel
~
~ revel! http://robfig.github.com/revel
~
usage: revel command [arguments]

The commands are:

    new         create a skeleton Revel application
    run         run a Revel application
    build       build a Revel application (e.g. for deployment)
    package     package a Revel application (e.g. for deployment)
    clean       clean a Revel application's temp files
    test        run all tests from the command-line

Use "revel help [command]" for more information.

プロジェクト作成

$ revel new revel-guestbook
~
~ revel! http://robfig.github.com/revel
~
Your application is ready:
   /path/to/gopath/src/revel-guestbook

You can run it with:
   revel run revel-guestbook
$ tree
.
├── app
│   ├── controllers
│   │   └── app.go
│   ├── init.go
│   ├── routes
│   │   └── routes.go
│   ├── tmp
│   │   └── main.go
│   └── views
│       ├── App
│       │   └── Index.html
│       ├── debug.html
│       ├── errors
│       │   ├── 404.html
│       │   └── 500.html
│       ├── flash.html
│       ├── footer.html
│       └── header.html
├── conf
│   ├── app.conf
│   └── routes
├── messages
│   └── sample.en
├── public
│   ├── css
│   │   └── bootstrap.css
│   ├── img
│   │   ├── favicon.png
│   │   ├── glyphicons-halflings-white.png
│   │   └── glyphicons-halflings.png
│   └── js
│       └── jquery-1.9.1.min.js
└── tests
    └── apptest.go

とりあえず動かす

$ revel run revel-guestbook
~
~ revel! http://robfig.github.com/revel
~
INFO  2014/01/05 12:03:29 revel.go:292: Loaded module testrunner
INFO  2014/01/05 12:03:29 revel.go:292: Loaded module static
INFO  2014/01/05 12:03:29 run.go:57: Running revel-guestbook (revel-guestbook) in dev mode
INFO  2014/01/05 12:03:29 harness.go:157: Listening on :9000

ゲストブックアプリケーション

herokuで動かした
Revel GuestBook

ソース
yuhei0718/revel-guestbook"

雑感

martiniに比べるとかなり大きなフレームワーク
ORマッパーは用意されていないのでgorpを使った。

ドキュメントは充実してるけど、martiniと比べると仕様が複雑でとっつきづらい印象。

「Hot Code Reload」なのは開発する上でとてもよい。
テンプレート関数がエラーがになったときの表示がわかりやすいのもよい。

この2点はmartiniと比べるとかなり良い点だと思った。


herokuにアップするためのbuildpackはrevel用のものが必要だった。

https://github.com/robfig/heroku-buildpack-go-revel.git