【问题标题】:how to ignore file to github and include the same file to heroku?如何忽略到 github 的文件并将相同的文件包含到 heroku?
【发布时间】:2014-06-26 23:22:07
【问题描述】:

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

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

我希望我能够解释我自己,如果没有,请随时编辑它以找到答案。感谢您的宝贵时间

【问题讨论】:

    标签: git grails heroku github


    【解决方案1】:

    一般来说,这种事情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 的网页界面设置。

    编辑:

    looks like 环境变量可以通过System.env.VARIABLE_NAME 在grails 中访问:

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

    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]
        }
    }
    

    【讨论】:

    • 您回答后的好解决方案我在 heroku 文档中找到了this 信息。有谁知道如何从 grails 访问 heroku config var?
    • @user615274,我在 Heroku 文档中发现了一些可能有帮助的东西。请查看更新后的答案。
    • 我尝试使用 System.env.GMAIL_USERNAME 或任何其他变量访问 heroku 配置变量,结果我得到 null,另一方面,我可以访问 System.env.DATABASE_URL 但在生产中,这里的问题是如何从本地开发环境访问配置变量
    • 现在正在运行,@Chris 解决方案在本地和生产环境中运行良好,一般说明在 heroku config vars documentation 中进行了解释。为了从本地获取环境变量,您需要在根应用程序中创建 .env 文件并在文件中设置所需的变量,从 foreman 启动您的框架,在这种情况下,已经与 Heroku Toolbelt 一起安装 foreman grails run -app,现在我们的应用程序可以访问在 .env 文件中设置的配置变量。感谢您的宝贵时间。
    • 而不是 foreman grails run-app 它必须是 foreman run grails run-app
    猜你喜欢
    • 2020-01-15
    • 2019-10-09
    • 2021-05-14
    • 2022-07-25
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    相关资源
    最近更新 更多