LoginSignup
78
66

More than 5 years have passed since last update.

goenvでgae/goと普通のgoの環境を切り替える

Last updated at Posted at 2014-12-20

gae/goはSDKの中にgoそのものも内包しているため、GOROOTとGOPATHを切り替えてやる必要が出てきます。
shellで切り替えても良いのですが、環境を切り替えるためのtoolにgoenvがあるので、今回はこちらを使って環境を切り替えるやり方を紹介します。

goenv install

goenvのinstallは公式Documentに書いてある通りです。

projectを作る

goenvを利用してgae/go用のprojectを作ります。

$ goenv -gae -go /Users/sinmetal/bin/google-cloud-sdk/platform/google_appengine/goroot -deps /Users/sinmetal/go sample

Environment /Users/sinmetal/Documents/temp/sample created!sample created!

option

-gae

GAE用のproject作成を指示するために-gaeを設定します。
これにより、app.yamlを生成してくれます。
普通のgoのproject作る時は、指定する必要はありません。

-go

-goはGOROOTを独自設定にするためのものです。
gae/goはSDKにgoそのものを持っているので、ここで指定します。
gae/goではなく普通のgoのprojectを作る時は、goがinstallされているpathを指定します。

-deps

作業ディレクトリ以外のPATHをGOPATHに追加するオプションです。
GAEの場合go getしたライブラリを作業ディレクトリの中に置くとデプロイ時にbuildされてしまうため、作業ディレクトリの外にGOPATHを置きます。
-depsを使えば外に置いてあるGOPATHと作業ディレクトリを連結してGOPATHに設定してくれます。

GAE/Go でのGOPATH設定

成果物

GAE設定の場合、以下のようなdir構造ができあがります。
activateに設定が書き込まれています。

sample
├── activate
└── src
    ├── app.yaml
    └── sample.go

ここまでで既にlocal serverは立ち上げることができます。

$ goapp serve sample/src/app.yaml                                                                                                                       

INFO     2014-12-20 08:38:43,540 devappserver2.py:745] Skipping SDK update check.
WARNING  2014-12-20 08:38:43,554 simple_search_stub.py:1115] Could not read search indexes from /var/folders/qt/n8vfptws13n9kgw4yddt4j8r0000gn/T/appengine.sample.sinmetal/search_indexes
INFO     2014-12-20 08:38:43,557 api_server.py:172] Starting API server at: http://localhost:59581
INFO     2014-12-20 08:38:43,561 dispatcher.py:186] Starting module "default" running at: http://localhost:8080
INFO     2014-12-20 08:38:43,564 admin_server.py:118] Starting admin server at: http://localhost:8000

goenv使い方

activateの適用と解除を実行すれば、projectに合わせて、
gae/goと普通のgoを切り替えることができます。

設定適用

source {activate path} を実行すれば、activateの内容に設定を書き換えてくれます。

$ source sample/activate

(go:sample) ╭─sinmetal@Aggron.local ~/Documents/temp

設定解除

deactivate を実行すれば、元の状態に戻ります。

$ deactivate

sinmetal@Aggron.local ~/Documents/temp
78
66
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
78
66