如何忽略文件到github并包含相同的文件到heroku?

时间:2014-06-26 23:22:08

标签: git grails heroku github

我正在尝试使用grails邮件插件,但我有下一个问题,我在heroku中有一个使用git部署的应用程序,应用程序也在github,当我阅读mail plugin setting我发现它可以使用gmail设置,它适合我的场景。

问题是,为了使用我需要使用我的gmail凭据的插件,我可以外化配置并使用gitignore文件和此修复程序在github中显示凭据但另一方面我需要将应用程序部署到heroku并需要凭证

我希望我能解释自己,如果没有,可以随意编辑它以找到答案。谢谢你的时间

1 个答案:

答案 0 :(得分:3)

一般来说,这类事情should be set on Heroku using environment variables

例如,你可以在Heroku上set an environment variables GMAIL_USERNAMEGMAIL_PASSWORD这样:

heroku config:set GMAIL_USERNAME=me@gmail.com
heroku config:set GMAIL_PASSWORD=someth1ngS3cret

然后将这些环境变量读入您的应用程序。我不是Grails用户,但在Python Django应用程序中,我可能会在settings.py文件中使用这样的代码:

GMAIL_USERNAME = os.getenv('GMAIL_USERNAME', 'default-username')
GMAIL_PASSWORD = os.getenv('GMAIL_PASSWORD', 'default-password')

现在,您可以通过设置这两个环境变量,将Gmail凭据设置为开发中的任何内容(以及其他开发人员也可以)。部署到Heroku时,代码可以使用变量,因此您可以将生产值放在那里。

这些变量也可以通过Heroku的网络界面设置。

修改

可以通过System.env.VARIABLE_NAME

在Grails中访问looks like个环境变量
  

通过将production中的grails-app/conf/DataSource.groovy数据库配置更改为此来配置您的应用以使用此数据库:

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

        uri = new URI(System.env.DATABASE_URL?:"postgres://test:test@localhost/test")

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