Heroku + Grails - 在heroku上构建应用程序时缺少DATABASE_URL [英] Heroku + Grails - missing DATABASE_URL when building app on heroku

查看:123
本文介绍了Heroku + Grails - 在heroku上构建应用程序时缺少DATABASE_URL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图使用grails教程将我的应用程序连接到共享数据库5MB。我正在使用grails 2.1.0。在我的本地机器上运行heroku config时,我可以看到DATABASE_URL已设置,但在执行git push之后...我的构建停止并显示错误消息:

I'm trying to connect my application to Shared Database 5MB using grails tutorial. I'm using grails 2.1.0. On my local machine when I run heroku config I can see that DATABASE_URL is set, but after executing git push... my build stops with error:

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:

So I've added logging to see how environment looks on heroku. I've added println System.env to Datasource.groovy and I cannot find any 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插件,为我的应用程序共享数据库安装:

I have checked with heroku addons that for my application shared database is installed:

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

,当我执行heroku时config

and when I execute heroku config

heroku config
=== Config Vars for XXX

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

Datasource.groovy:

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中,我已经添加了

In BuildConfig.groovy I've added

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

我可以在DATABASE_URL本地启动应用程序,将其设置为本地postgresql。

I can launch application locally with DATABASE_URL set to local postgresql. I'm building war and running it on jetty.

任何人都可以告诉我我缺少什么?

Can anyone tell me what am I missing?

推荐答案

应用程序环境变量在构建时不可用。你的代码需要能够相应地处理。或者,您可以启用新的 user_env_compile Heroku Labs功能,该功能可以在构建时启用环境变量: https://devcenter.heroku.com/articles/labs-user-env-compile

The application environment variables are not available at build time. Your code needs to be able to handle that accordingly. Or you can enable the new user_env_compile Heroku Labs feature that does enable the environment variables to be there at build time: https://devcenter.heroku.com/articles/labs-user-env-compile

这篇关于Heroku + Grails - 在heroku上构建应用程序时缺少DATABASE_URL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆