1

grailsチュートリアルを使用して、アプリケーションをSharedDatabase5MBに接続しようとしています。grails2.1.0を使用しています。ローカルマシンでherokuconfigを実行すると、DATABASE_URLが設定されていることがわかりますが、git pushを実行した後...ビルドがエラーで停止します:

Error packaging application: Error loading DataSource.groovy: null (Use --stacktrace to see the full trace)
Failed to build app
Heroku push rejected, failed to compile Grails app

そこで、herokuで環境がどのように見えるかを確認するためにロギングを追加しました。println System.envをDatasource.groovyに追加しましたが、DATABASE_URLが見つかりません。

.[OLDPWD:/app/tmp/repo.git/.cache, SHELL:/bin/bash, SHLVL:2, GIT_DIR:., JAVA_HOME:/usr/lib/jvm/java-6-openjdk, PATH:/app/tmp/repo.git/.cache/.grails/bin::/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin, SSH_CLIENT:XXX, MAIL:XXX, USER:XXX, LOG_TOKEN:t.9e79a5be-dfa2-446e-9f83-f6b4ebbc4eb7, GRAILS_HOME:/app/tmp/repo.git/.cache/.grails, PWD:XXX, HOME:/app/, LOGNAME:u11846, _:/app/tmp/repo.git/.cache/.grails/bin/grails, SSH_CONNECTION:XXX, LD_LIBRARY_PATH:/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-6-openjdk/jre/lib/amd64:/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64]

アプリケーションの共有データベースがインストールされていることをherokuアドオンで確認しました。

heroku addons
=== XXX Configured Add-ons
shared-database:5mb

そして、herokuconfigを実行すると

heroku config
=== Config Vars for XXX

DATABASE_URL:        postgres://XXX
JAVA_OPTS:           -Xmx384m -Xss512k -XX:+UseCompressedOops
SHARED_DATABASE_URL: postgres://XXX

Datasource.groovy:

production {
    dataSource {
        dbCreate = "update"
        driverClassName = "org.postgresql.Driver"
        dialect = org.hibernate.dialect.PostgreSQLDialect

        println System.env
        println System.env.DATABASE_URL
        uri = new URI(System.env.DATABASE_URL)
        println uri

        url = "jdbc:postgresql://" + uri.host + uri.path
        username = uri.userInfo.split(":")[0]
        password = uri.userInfo.split(":")[1]
    }
}

BuildConfig.groovyに追加しました

runtime 'postgresql:postgresql:8.4-702.jdbc3'

DATABASE_URLをローカルpostgresqlに設定して、アプリケーションをローカルで起動できます。私は戦争を構築し、突堤でそれを実行しています。

誰かが私が欠けているものを教えてもらえますか?

4

1 に答える 1

3

アプリケーション環境変数は、ビルド時には使用できません。コードはそれに応じてそれを処理できる必要があります。user_env_compileまたは、ビルド時に環境変数を有効に する新しいHeroku Labs機能を有効にすることもできます: https ://devcenter.heroku.com/articles/labs-user-env-compile

于 2012-07-16T22:24:08.860 に答える