可以通过命令行访问的多行用法来记录 Rake 任务吗?

psy*_*ave 7 ruby documentation rake

Rake 允许简洁地记录任务正在执行的操作。但是,如果任务旨在提供有关其使用情况的更多信息怎么办?这是一个用多行来做的天真的尝试desc

desc <<~lid
  Do nothing, even when arguments are provided.
  Usage:
    rake 'users:idle["something", "anotherthing"]'
    rake 'users:idle[, "anotherthing"]' # something is ignored anyway
    rake users:idle # do nothing tersely
lid
task :idle, [:option, :token] => :environment  do |task, fad|
  # Really, do nothing!
end
Run Code Online (Sandbox Code Playgroud)

但运行rake --tasks只会显示第一行。有没有办法通过一些 rake 命令访问其余部分desc

小智 6

我来到这里遇到了同样的问题:我向任务添加了一个具有默认值的参数,并希望详细记录该参数,以确保人们知道他们可以传递自己的值。

我发现如果我把字符串加长,它会打印整个字符串,并将其换行到下一行,这看起来很糟糕。但是,如果我传递多行字符串,-T输出只会打印到第一行末尾的字符串。

事实证明,这种行为是故意的:

https://ruby.github.io/rake/Rake/DSL.html#method-i-desc

描述用 rake -T (直到第一句话)和 rake -D (整个描述)显示。

鉴于上面的示例,rake -D(或rake --describe) 应该可以解决问题:

$ rake -T
rake idle[option,token]                # Do nothing, even when arguments are provided

$ rake -D
rake idle[option,token]
    Do nothing, even when arguments are provided.
    Usage:
      rake 'users:idle["something", "anotherthing"]'
      rake 'users:idle[, "anotherthing"]' # something is ignored anyway
      rake users:idle # do nothing tersely
Run Code Online (Sandbox Code Playgroud)