【问题标题】:Can Heroku add-on configs change randomly in the cloud?Heroku 附加配置可以在云中随机更改吗?
【发布时间】:2012-05-02 22:08:16
【问题描述】:

作为 Heroku 的新手,我自己有点confused with add-ons

大约一年前的 Heroku blog post 引用了使用插件的环境变量作为最佳实践:

您的应用从环境变量(例如DATABASE_URL)中读取支持服务(例如数据库、memcached 或传出 SMTP 服务器)的配置,而不是硬编码的常量或配置文件。这允许平台轻松连接附加资源(当您运行 heroku addons:add 时),而无需修改您的代码。

我确实在使用环境变量(通过 Heroku 配置),但在一种情况下,我使用的是我自己的变量,而不是由附加组件添加的默认变量。

(具体来说,我更喜欢使用 CACHE_HOSTCACHE_PORT 等作为我的 Redis 缓存而不是 Heroku 的 REDISTOGO_URL。感觉更精确/模块化和更通用 - 特别是当我使用本地Redis 的实例,而不是 RedisToGo,在开发过程中。)

我想知道,这是一种不好的做法吗?像REDISTOGO_URL 这样的附加配置可以在云中随机更改吗?

【问题讨论】:

    标签: heroku


    【解决方案1】:

    这里是 Heroku 插件团队的首席工程师。回答您的问题以及您的其他观点和推理:

    • 插件配置可以更改吗?是的。附加供应商可以随时更改它而不会发出警告。我们建议提供商不要更改它,除非他们绝对必须这样做,因为这会导致您的应用程序和进程重新启动。但它可以改变,所以你应该假设它会改变。

    • 更精确/模块化。已经有一种既定的标准化方法来定义指向资源的指针,即 URI。我们建议提供商尽可能使用它。

    • 更通用,尤其适用于本地开发。是的。我们认识到这是一个问题。我们正在讨论解决它的不同方法,在此期间我建议使用工头和 .env 文件。

    希望对您有所帮助。如果还有什么其他的,请告诉我,

    格伦

    【讨论】:

    • 很高兴直接从源头获得彻底的答案 — 非常感谢。回复:最后一点,我确实在本地使用工头和 .env 文件;让我的代码依赖一个名为REDISTOGO_URL 的配置很奇怪——这意味着代码需要 Redis 数据库由 RedisToGo 提供,这感觉有点傻。也许可以选择“重命名”附加配置/将它们“映射”到不同的名称?
    • 同意这很奇怪,可能不受欢迎。我们正在考虑更好的方法来解决它。敬请期待:)
    • 太棒了!谢谢。 =) 我等不及了。
    【解决方案2】:

    这是配置变量的重点。应该/如果/当插件提供者/Heroku 需要更改它的变量时,它可以这样做,而无需您更新任何代码库。显然,如果您选择根据 REDISTOGO_URL 变量将变量拆分为您自己的变量,则确实需要您的干预,但总的来说,我认为这是一个很好的设计。

    【讨论】:

    • 感谢您的观点。这在实践中真的会发生吗? / Heroku 之前是否在没有通知的情况下更改了环境变量?
    • 在使用 Heroku 近 3 年的时间里,我从未见过这种情况发生(据我所知)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    相关资源
    最近更新 更多