【发布时间】:2016-09-02 00:37:41
【问题描述】:
是否可以将 cmets 放在 Procfile 中?如果有,语法是什么?
不确定这是否重要,但我在 Heroku 上托管。
【问题讨论】:
是否可以将 cmets 放在 Procfile 中?如果有,语法是什么?
不确定这是否重要,但我在 Heroku 上托管。
【问题讨论】:
似乎 Heroku 实际上并不接受 // 作为 cmets(它会中断),而 # 似乎可以工作。
无论如何,要测试您的 Procfile,您可以使用 heroku local command
【讨论】:
作为该问题的 2020 年更新,Heroku 已从在 Heroku Local 中使用 Forego 切换到 node-foreman(原始工头的一个端口)。话虽如此,自 2017 年以来,工头读取和写入 Procfiles 的方式并没有太大变化。但是在 2016 年 6 月左右(在 2016 年 5 月更新此问题之后),似乎用户发现进程仍将从行启动以# 开头。以下仍将启动一个进程:
# foo: cd foo && bundle exec rails s -p 3000
另一方面,// 似乎确实阻止了在该行上启动进程。阻止以下运行:
// foo: cd foo && bundle exec rails s -p 3000
您可以使用其中任何一个来创建 cmets,因为如上所述,以# 开头的行将不会被读取,除非它们声明了有效的进程。另一方面,如果您试图注释掉声明了有效进程的行,则似乎// 是要使用的注释样式。
【讨论】:
是的,您可以将 cmets 放在 Procfile 中。我知道两个解析 Procfile 的程序,foreman 和 forego。
在起源于 Procfile 格式的 foreman 中,Procfile 可以包含 cmets、空行以及实际上任何看起来不像有意义的 Procfile 行的行。
来自the class that parses a Procfile:
# A valid Procfile entry is captured by this regex:
#
# /^([A-Za-z0-9_]+):\s*(.+)$/
#
# All other lines are ignored.
【讨论】:
# 之类的前缀,以使它们显而易见,并避免与进程语法意外匹配。