何度やっても同じ

ただの日記

GAEの開発環境という言葉がまぎらわしい

デプロイしたからといってそこが本番環境とは限らないのだよね。GAE上に開発用アプリケーションをつくることはよくあるわけで。

特にホスト名の管理が必要なアプリの場合。たとえば、あるURLを特定のホスト名でしか見れなくする、あるいはリダイレクトする、あるいはcanonical urlを設定したいときも。個人的にはよくある。

そんなときに、ローカルの開発環境ではこのホスト名、開発用アプリケーションにデプロイしたときはこのホスト名、本番環境ではこのホスト名、というのをヘタにコードにすると、

if (AppEngineUtil.isProduction() && env.isDevelopment()) {
  // ...
}

みたいな、どっちなんだよ!状態になったりして。

最近は↓のようなユーティリティをつくるようになりました。

public class HogeUtil {

    public static boolean isRunningOnServer() {
        return SystemProperty.environment.value() ==
            SystemProperty.Environment.Value.Production;
    }

    public static boolean isRunningOnLocalhost() {
        return SystemProperty.environment.value() ==
            SystemProperty.Environment.Value.Development;
    }
}