0

Grails はローカルで mongodb プラグインとうまく動作しますが、AppFog で問題が発生しています。

Grails を AppFog にデプロイする手順は、MongoDB 以外のデータベースについてはかなり明確です。ドキュメントはMongoDBの自動構成をほのめかしているようですが、構成を次のように設定すると機能しません。

//DataSource.groovy

grails {
  mongo {
    host = "localhost"
    port = 27017
    databaseName = "dbname"
  }
}

自動構成は、localhost を適切なホスト名に置き換えないようです。VCAP_SERVICES から値を設定する必要があるようです。

4

2 に答える 2

2

サポートに連絡した後、答えは VCAP_SERVICE 環境変数を使用することでした。Web を掘り下げた後、構成で VCAP_SERVICES を取得して使用する方法を見つけました。

grails {
    def vcap = System.env.VCAP_SERVICES
    def credentials = vcap ? grails.converters.JSON.parse(vcap)["mongodb-1.8"][0]["credentials"] : null
    mongo {
        host = credentials ? credentials.hostname : "localhost"
        port = credentials ? credentials.port : "27017"
        username = credentials ? credentials.username : null
        password = credentials ? credentials.password : null
        databaseName = credentials ? credentials.db : "dbname"
    }
}

この構成の github gistも作成しました。

于 2012-11-14T23:47:47.430 に答える
2

Grails プロジェクトに CloudFoundry プラグインがインストールされていますか? このプラグインは、Grails アプリで MongoDB およびその他のデータ ソースの自動再構成を行います。

なんらかの理由で Grails CloudFoundry プラグインを使用できない、または使用したくない場合、上記の環境変数を使用する代わりに、cloudfoundry-runtime Java APIを使用することもできます。この API を使用すると、環境変数に保存されているものと同じ情報にアクセスできますが、環境変数を直接解析するよりも少しクリーンです。

于 2012-11-15T05:15:45.697 に答える