2

Grails 構成ファイルには、次のような 3 つの環境ブロックがあります。

environments {
    production {
        grails.serverURL = "https://www.mysite.com"
    }
    development {
        grails.serverURL = "http://localhost:8080/${appName}"
    }
    test {
        grails.serverURL = "http://localhost:8080/${appName}"
    }
}

... // more code

environments {
    production {
        authnet.apiId = "123456"
        authnet.testAccount = "false"
    }
    development {
        authnet.apiId = "654321"
        authnet.testAccount = "true"
    }
    test {
        authnet.apiId = "654321"
        authnet.testAccount = "true"
    }
}

... // more code

environments {
    production {
        email.sales = 'sales@mysite.com'
    }
    development {
        email.sales = 'test@mysite.com'
    }
    test {
        email.sales = 'test@mysite.com'
    }
}

コントローラーのどこかに:

println grailsApplication.config.grails.serverURL
println grailsApplication.config.authnet.apiId
println grailsApplication.config.email.sales

次のように出力されます。

http://localhost:8080/myapp
[:]
test@mysite.com

そのため、何らかの理由でアプリが一部の環境ブロックからデータを取得できません。環境ブロックの外側のものは問題ありません。いくつかの異なるアプリ、異なる構成などでこの問題に気付きました.grailsApplicationとConfigurationHolderの両方で取得しようとしました。それはGrailsのバグですか、それとも何か間違っていますか? Grails 1.3.6 を実行しています

4

2 に答える 2

4

構成情報を数回再定義します。XML 構成の代わりに実行される groovy コードを作成すると、変更が自動的にマージされないため、複数の構成ブロックが互いに上書きされます。次のように、すべてを1つのブロックで定義する必要があります

environments {
    development {
        grails.serverURL = "http://localhost:8080/${appName}"
        authnet.apiId = "654321"
        authnet.testAccount = "true"
    }
    test {
        grails.serverURL = "http://localhost:8080/${appName}"
        authnet.apiId = "654321"
        authnet.testAccount = "true"
    }
    production {
        grails.serverURL = "https://www.mysite.com"
        authnet.apiId = "123456"
        authnet.testAccount = "false"
        }
于 2011-07-19T16:59:34.743 に答える
0

開発環境を使用して実行しているため、開発設定からホストとポートを選択しています。デフォルトでは、

grails run-app

開発環境を使用してアプリケーションを実行します。本番環境で実行するには、コマンドを使用して war ファイルを作成し、grails warそれをサーブレット コンテナーにデプロイするか、次を使用します。

grails prod run-app

詳細については、 http://www.grails.org/Environmentsを参照してください。

于 2011-07-19T18:17:26.147 に答える