成为Heroku的新手,我自己有点confused with add-ons。
大约一年前的这个Heroku blog post引用了附加组件的环境变量作为最佳实践:
您的应用从环境变量(例如
DATABASE_URL
)读取数据库,memcached或外发SMTP服务器等支持服务的配置,而不是硬编码的常量或配置文件。这使平台可以轻松连接附加资源(当您运行heroku addons:add
时),而无需触摸您的代码。
我确实在使用环境变量(通过Heroku配置),但在一种情况下,我使用自己的变量而不是由附加组件添加的默认变量。
(具体来说,我更喜欢使用例如CACHE_HOST
,CACHE_PORT
等来通过Heroku的REDISTOGO_URL
进行Redis缓存。它感觉更精确/模块化,更通用 - 尤其是当我在开发期间使用Redis的本地实例而不是RedisToGo时。)
我想知道,这是一种不好的做法吗?像REDISTOGO_URL
这样的附加配置会在云端随机变化吗?
答案 0 :(得分:1)
来自Heroku Add-ons团队的首席工程师。回答你的问题以及你的其他观点和推理:
附加组件配置是否可以更改?是。附加提供商可以随时更改它而不会发出警告。我们建议提供商不要更改它,除非他们必须更改它,因为它会导致重新启动您的应用和流程。但它可以改变,所以你应该假设它会。
更精确/模块化。已经有一种既定的标准化方法来定义指向资源的指针,即URI。我们建议提供商尽可能使用它。
更通用,尤其适用于本地开发。是的。我们认识到这是一个问题。我们正在讨论解决它的不同方法,在此期间我建议使用foreman和.env文件。
希望有所帮助。让我知道是否还有其他事情,
格伦
答案 1 :(得分:0)
这是配置变量的一点。应该/如果/当一个插件提供者/ Heroku需要更改它的变量时,它可以这样做,而无需更新任何代码库。显然,如果您根据REDISTOGO_URL
变量选择将变量拆分为自己的变量,它确实需要您的干预,但总的来说我认为这是一个很好的设计。