【问题标题】:How to display Rails-like output from a Rake task?如何显示来自 Rake 任务的类似 Rails 的输出?
【发布时间】:2012-07-19 18:16:11
【问题描述】:

我有一个 rake 任务,用于设置一堆符号链接,但前提是它们不存在。当前,当您运行任务时,没有输出。所以你不知道有没有发生什么事。如何通过为每个符号链接说“创建”或“跳过”来提供像 Rails 生成器一样的输出?我需要包含哪些 gem 或模块才能获得此类功能?

# example
task :setup do
  if !File.symlink?('/example/link')
    %x{cd /example && ln -s /something link}
  end
end

【问题讨论】:

标签: ruby-on-rails ruby rake


【解决方案1】:

我可能会为此使用 Ruby 的 FileUtils ln_s 功能。

ln_s(old, new, options = {})

创建一个指向旧的符号链接new。如果新的已经存在 它是一个目录,创建一个新/旧符号链接。如果已经新 存在并且它不是目录,引发 Errno::EEXIST。但是如果 :force 选项已设置,覆盖新的。

FileUtils.ln_s '/usr/bin/ruby', '/usr/local/bin/ruby'
FileUtils.ln_s 'verylongsourcefilename.c', 'c', :force => true

...

ln_s(list, destdir, options = {})

在一个目录中创建多个符号链接,每个链接指向 到列表中的项目。如果 destdir 不是目录,则引发 Errno::ENOTDIR。

如果 destdir 不是目录,则引发 Errno::ENOTDIR。

【讨论】:

  • 那么FileUtils.ln_s 提供了什么%x{ln -s} 没有?
  • @Andrew 您不必担心读取输入并从系统调用中解析它。您可以从 Errno::EEXIST 异常中解救出来,并在文件已经存在时处理这些情况。此外,%x{} 就像在系统上执行 eval(),这是一个不好的习惯,尤其是当您可以在 Ruby 中执行此操作时。
  • 好的,切换到那个听起来是个好主意。现在回到我最初的问题,你知道如何创建一些类似于 Rails 生成器的格式化输出吗?
  • 您不使用 Rails 生成器有什么原因吗?您也可以使用其中一个雷神生成器。 blog.plataformatec.com.br/2009/07/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-15
  • 2018-12-07
  • 2011-06-22
  • 1970-01-01
  • 2020-04-21
  • 2012-12-28
  • 2012-02-01
相关资源
最近更新 更多