rei*_*eid 3 ruby ruby-on-rails heroku sprockets asset-pipeline
我希望使用基于 Heroku 实验室设置的任何可能值的缓存键将文件加载到我的 Rails 缓存中:Dyno 元数据插件 ( https://devcenter.heroku.com/articles/dyno-metadata )。
在那篇文章中,我正在寻找一个在 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
Run Code Online (Sandbox Code Playgroud)
有没有办法在实际构建之前唯一地了解当前构建?也许不使用 heroku lab 插件?
我收到了 Heroku 支持的回复,这似乎解决了我正在寻找的需求。
海罗库的回应:
不幸的是,此时,我们的 dyno 元数据实验室标志和构建期间提供的配置变量并不完全匹配。在构建过程中,您可以使用 SOURCE_VERSION 环境变量,它将是提交哈希。然后,在运行时,您可以使用 HEROKU_SLUG_COMMIT 来获取相同的值。
这种差异背后的原因主要是上下文的差异。在构建期间将该变量命名为 HEROKU_SLUG_COMMIT 没有意义,因为它还不是 slug。
由于我们永远不会设置这两个配置变量,因此您应该能够使用其中任何一个,如果未设置则回退到另一个。
我现在的实现是:
ENV["SOURCE_VERSION"] || ENV['HEROKU_SLUG_COMMIT']按顺序。这对我有用。
| 归档时间: |
|
| 查看次数: |
687 次 |
| 最近记录: |