Edited at

Revelのホームページを読んでみる(1

More than 3 years have passed since last update.

http://revel.github.io/

GolangのWebFramework、Revelのホームページを読んでいきたいと思います。

Go言語による高生産性を誇るWebFramworkだそうです。

現時点でラストリリースが2015/3/25、バージョンが0.12.0です。


Features


Hot Code Reload

Revelは編集されたコード・テンプレートを自動的にコンパイルします。コンパイルが失敗した場合でもわかりやすい説明が表示されます。ランタイムエラーも同様です。


Comprehensive

Revelは以下の機能を提供します。


  • routing

  • parameter parsing

  • validation

  • session/flash

  • templating

  • caching

  • job running

  • a testing framework

  • internationalization


High Performance

RevelはGo Http サーバ上に構築されており、

多様な負荷において、Railsなどと比べて3~10倍速いベンチマークをだしています。


Framework Design


Synchronous

Go Http サーバは各リクエストをGoルーチン上で処理しており、コールバックから解放されたコードを問題なく書けます。


Stateless

Revelは起きるであろうスケーリングに備えて、状態を保持しません。たとえばセッションはユーザのクッキーで賄いますし、キャッシュはredisやメモリに保持します。


Modular

Revelはフィルタと呼ばれるコンポーサブルなミドルウェアを中心に構築されています。それらはリクエストを処理する関数として実装されています。開発者は自由にフィルタを置き換えることができます。


Quick Start

Revelは基本的な使い方を示すためにサンプルアプリケーションを用意しています。

使い方:

1. Revelをインストールします

go get github.com/revel/revel

2. Revelのコマンドラインツールをインストールします

go get github.com/revel/cmd/revel

3. サンプルアプリをインストールします

go get github.com/revel/samples

4. Chatサンプルを起動します

revel run github.com/revel/samples/chat

5. http://localhost:9000/ を開きます

なお私はcloud9上で試しているため、src/revel/samples/chat/conf/app.confを次にように編集しました。

http.addr=0.0.0.0

http.port=8080

その際の実行結果を下に載せておきます。

~/workspace (master) $ export GOPATH=~/workspace/golang/

~/workspace (master) $ cd golang/
~/workspace/golang (master) $ go get github.com/revel/revel
~/workspace/golang (master) $ go get github.com/revel/cmd/revel
qooq@demo-project:~/workspace/golang (master) $ export PATH=$PATH:~/workspace/golang/bin
~/workspace/golang (master) $ go get github.com/revel/samples
package github.com/revel/samples
imports github.com/revel/samples
imports github.com/revel/samples: no buildable Go source files in /home/ubuntu/workspace/golang/src/github.com/revel/samples
~/workspace/golang (master) $ revel run github.com/revel/samples/chat
~
~ revel! http://revel.github.io
~
2015/04/21 01:12:57 revel.go:329: Loaded module static
2015/04/21 01:12:57 revel.go:329: Loaded module testrunner
2015/04/21 01:12:57 revel.go:206: Initialized Revel v0.12.0 (2015-03-25) for >= go1.3
2015/04/21 01:12:57 run.go:57: Running chat (github.com/revel/samples/chat) in dev mode
2015/04/21 01:12:57 harness.go:165: Listening on 0.0.0.0:8080

画面:

新しいアプリの作成・実行

1. アプリの作成 revel new github.com/my-account/my-app

2. Cloud9の場合、app.confを編集

3. アプリの実行 revel run github.com/my-account/my-app


src/github.com/my-account/my-app/conf/app.conf

# The IP address on which to listen.

http.addr = 0.0.0.0

# The port on which to listen.
http.port = 8080


$ revel new github.com/kazusa-qooq/my-app

~
~ revel! http://revel.github.io
~
Your application is ready:
/home/ubuntu/workspace/golang/src/github.com/kazusa-qooq/my-app

You can run it with:
revel run github.com/kazusa-qooq/my-app
$ revel run github.com/kazusa-qooq/my-app
~
~ revel! http://revel.github.io
~
INFO 2015/04/21 01:32:58 revel.go:329: Loaded module testrunner
INFO 2015/04/21 01:32:58 revel.go:329: Loaded module static
INFO 2015/04/21 01:32:58 revel.go:206: Initialized Revel v0.12.0 (2015-03-25) for >= go1.3
INFO 2015/04/21 01:32:58 run.go:57: Running my-app (github.com/kazusa-qooq/my-app) in dev mode
INFO 2015/04/21 01:32:58 harness.go:165: Listening on 0.0.0.0:8080
INFO 2015/04/21 01:32:58 build.go:172: Cleaning dir tmp
ERROR 2015/04/21 01:32:58 build.go:176: Failed to clean dir: open /home/ubuntu/workspace/golang/src/github.com/kazusa-qooq/my-app/app/tmp: no such file or directory
INFO 2015/04/21 01:32:58 build.go:172: Cleaning dir routes
ERROR 2015/04/21 01:32:58 build.go:176: Failed to clean dir: open /home/ubuntu/workspace/golang/src/github.com/kazusa-qooq/my-app/app/routes: no such file or directory
INFO 2015/04/21 01:32:58 build.go:172: Cleaning dir tmp
ERROR 2015/04/21 01:32:58 build.go:176: Failed to clean dir: open /home/ubuntu/workspace/golang/src/github.com/kazusa-qooq/my-app/app/tmp: no such file or directory
INFO 2015/04/21 01:32:58 build.go:172: Cleaning dir routes
ERROR 2015/04/21 01:32:58 build.go:176: Failed to clean dir: open /home/ubuntu/workspace/golang/src/github.com/kazusa-qooq/my-app/app/routes: no such file or directory
INFO 2015/04/21 01:33:01 revel.go:329: Loaded module testrunner
INFO 2015/04/21 01:33:01 revel.go:329: Loaded module static
INFO 2015/04/21 01:33:01 revel.go:206: Initialized Revel v0.12.0 (2015-03-25) for >= go1.3
INFO 2015/04/21 01:33:01 main.go:30: Running revel server
Go to /@tests to run the tests.
Listening on 0.0.0.0:49616...

画面

なんかエラーっぽいのも出てますけど、サーバも起動できましたし、いったん切ります。

次回はRevelのOverviewを読んでいきます。

次回