【发布时间】:2017-09-24 06:15:58
【问题描述】:
我希望根据 Heroku Labs: Dyno Metadata 插件 (https://devcenter.heroku.com/articles/dyno-metadata) 设置的任何可能值使用缓存键将文件加载到我的 Rails 缓存中。
在那篇文章中,我正在寻找一个在 slug 构建过程早期可用的唯一标识符。
HEROKU_RELEASE_CREATED_AT: 2015-04-02T18:00:42Z
HEROKU_RELEASE_VERSION: v42
HEROKU_SLUG_COMMIT: 2c3a0b24069af49b3de35b8e8c26765c1dba9ff0
这三个是我感兴趣的(上面的示例数据)。在我的资产预编译步骤中,我依赖于一个独特的值,我决定使用上述 3 个中的任何一个。此步骤在我的 rails 应用程序运行之前完成。
最初我尝试了HEROKU_RELEASE_VERSION,但我注意到它在 slug 构建过程完成之前没有设置,这意味着在我的资产预编译步骤中,它是nil。
然后我尝试HEROKU_SLUG_COMMIT 看看这在资产预编译之前是否已知。它是否正确?从一些初始测试来看,它似乎可以正常工作(至少在资产预编译之前就知道了),但是我想知道这些设置的正确顺序。
如果这不是 ENV[] 中可用的较早值,有什么更好的建议?
====== 更新:
我一直在玩下面的配置值:
HEROKU_RELEASE_CREATED_AT: 2015-04-02T18:00:42Z
HEROKU_RELEASE_VERSION: v42
HEROKU_SLUG_COMMIT: 2c3a0b24069af49b3de35b8e8c26765c1dba9ff0
我注意到在构建资产之前,上述值不会在构建前更改,而是在构建后更改。下面,我有下面的结果输出。如您所见,当前部署为2583508,但ENV['HEROKU_SLUG_COMMIT'] 在构建过程中返回8318914,直到应用程序完成,然后ENV['HEROKU_SLUG_COMMIT'] 更新为2583508。
=== sample-app Releases - Current: v356
v356 Deploy 2583508 email@gmail.com 2017/04/26 20:05:51 -0400 (~ 40s ago)
v355 Deploy 8318914 email@gmail.com 2017/04/26 19:51:33 -0400 (~ 14m ago)
v354 Deploy c054f1e email@gmail.com 2017/04/26 19:40:42 -0400 (~ 25m ago)
BROWSER RESTRICTIONS SLUG COMMIT: 83189141e4e45643bf71d9aa78604e479ea210f1
有没有办法在实际构建之前唯一地知道当前构建?也许不使用 heroku 实验室插件?
【问题讨论】:
标签: ruby-on-rails ruby heroku asset-pipeline sprockets