環境
OS X 10.9.5
ゴール
GoのVendoring機能を使ってGojiのサンプルを動かす
入れたもの
- Go1.6
- glide 0.8.3
glideって?
パッケージ管理をしてくれるツールです。
プロジェクト単位でパッケージを管理できるようになります。
(なぜGoでパッケージ管理が重要(面倒)になっているかは割愛・・・!)
ただ注意点があります。
GO15VENDOREXPERIMENTが1になっている必要があります。
もしなっていない場合は↓で
$ export GO15VENDOREXPERIMENT=1
手順
- glideインストール
- サンプルプロジェクト作成
- glide create
- main処理作成
- パッケージダウンロード
- ビルド
- 起動!!
glideインストール
# Homebrewでインストール
$ brew install glide
# 確認
$ glide -v
glide version 0.8.3
この時Homebrewが古いとglideも古いバージョンが入ります。
glideのバージョンが古いと用意されていないコマンドがあったりするので、
一度Homebrewをアップデートしてからがいいと思います。
サンプルプロジェクト作成
# /tmp下にvendor-testというディレクトリで作業
$ cd /tmp && mkdir vendor-test
glide create
# 移動
$ cd /tmp/vendor-test
# srcディレクトリ作成
$ mkdir -p src/v1 && cd src/v1
# initialize
$ glide create
createすると直下にglide.yamlというファイルができます。
中見るとパッケージ等なにも記述されていません。
(まだmain処理がないので当たり前っちゃ当たり前ですが)
main処理作成
Gojiのサンプル拝借します!ありがとうGOji!!
# main.goにサンプル貼付けます
vim main.go
貼付けると↓こんな感じになります。
package main
import (
"fmt"
"net/http"
"github.com/zenazn/goji"
"github.com/zenazn/goji/web"
)
func hello(c web.C, w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, %s!", c.URLParams["name"])
}
func main() {
goji.Get("/hello/:name", hello)
goji.Serve()
}
パッケージダウンロード
GOPATHが設定されていないと怒られます。
export GOPATH=/tmp/vendor-test
を設定してください。
# パッケージインストール
$ glide get github.com/zenazn/goji
[INFO] Preparing to install 1 package.
[INFO] Importing github.com/zenazn/goji
[INFO] Walking the dependency tree to calculate versions
[INFO] Fetching updates for github.com/zenazn/goji.
[INFO] Scanning github.com/zenazn/goji for dependencies.
[INFO] ==> Unknown github.com/goji/param (github.com/goji/param)
[INFO] Fetching updates for github.com/goji/param.
[INFO] Scanning github.com/goji/param for dependencies.
[INFO] Project relies on 2 dependencies.
[INFO] Writing glide.lock file
# treeで見てみる
$ tree
.
├── glide.lock
├── glide.yaml
├── main.go
└── vendor
└── github.com
├── goji
・
・
・
vendorディレクトリができてる!
そしてその中にGojiのソースがIN!
ビルド
# ビルド
$ go build
# tree
$ tree
├── glide.lock
├── glide.yaml
├── main.go
├── v1
└── vendor
└── github.com
├── goji
v1ってものが作られた!
起動
# 上で作られたv1を実行します
$ ./v1
2016/02/11 14:03:39.657003 Starting Goji on [::]:8000
おぉー起動したー!
実際にアクセスしてみる。
ブラウザからlocalhost:8000にアクセスすると・・・
404 page not found
って表示されるので動いている!
先ほど起動したターミナルを見てみると・・・
2016/02/11 14:05:04.275370 [] Started GET "/" from [::1]:50897
2016/02/11 14:05:04.283113 [] Returning 404 in 27.408µs
2016/02/11 14:05:04.577383 [] Started GET "/favicon.ico" from [::1]:50897
2016/02/11 14:05:04.577419 [] Returning 404 in 10.605µs
って表示されている。
ゴ〜〜〜〜ル!
まとめ
glideとvendoring機能を試してみましたが、
結構シンプルにパッケージ管理ができていいなぁと思いました。
ただ・・・
vendoring機能の仕様?でディレクトリ構成によって
vendor下を見に行ってくれなかったです。
(今回でいうとsrc/の下にv1というディレクトリを置く事によって
見にいくようになりました)
というわけで、
まだまだ詳しく調べる必要があるなぁという結果になりました。
(英語ばっかりで読むのに時間かかるんだもん ← 雑魚感)