GOでGoogleAppEngineとコンソールのどちらでも動くようなプログラムを作りたいんだけど
GoogleAppEngineとコンソールのどちらでも動くようなコードでプログラムを作りたいんだけど,困った問題が。
GoogleAppEngineで動かしている時にコンソール出力をやろうと思うと,appengineパッケージが提供するライブラリを使わないといけない。
(fmt.Printlnとかでは出力されない)
つまり
func Output(w http.ResponseWriter, r *http.Request) { appengine.NewContext(r).Infof("Hello!") }
こんな感じにしないとコンソールに出力できない…
GoogleAppEngineが提供するライブラリを使うので,このコードをそのままにコンソールアプリを作ろうとするとビルドエラーになる。
エラーの理由は当然GOROOTにもGOPATHにもappengineなんて無いよ,だ。
GOPATHの方にGoogleAppEngineのライブラリのリンクを作ろうかと思ったんだけど,そういうの公式には認められないので…辞める。
(GOPATHはgo getとかでソースからしっかりインストールしていくものらしい…)
そんなこんなでラッパーでも書くかな〜的な感じになりそうです。
追記
公式ブログの方にHybrid stand-alone/App Engine appsという記事がありました。
読んでみると,スタンドアロンでサーバー用コードとGoogleAppEngine用コードの共存はBuild Constraintsを使えばできると書いてあります。