Rails 生成器 :: 着色输出并引发异常

Rails generators :: colorize output and raise exceptions

我目前正在写或多或少复杂的 rails generator。除了缺少文档外,它非常简单。我看到像 create_file 这样的内部方法(来自 Thor,AFAIU,)和其他方法将它们的输出着色:

另一方面,在我快速浏览开源生成器(如 rails-default、punditdevise, 等等)我希望这个功能被导出,像 say WARN, 'You are doing it wrong'.

另一个小问题:是否确实有必要手动处理所有错误,打印出一条消息并优雅地退出,而不是引发某种 rails-generators-aware 标准异常?!

非常感谢任何关于我遗漏的建议。

好吧,在沉默的同时,我设法自己实现了颜色记录。如果将来有任何陌生人需要相同的功能,我就把它放在这里。

SYMBOLS = { 
  scs: ['107', '✔'], 
  nfo: ['68', '✓'], 
  wrn: ['226', '✗'], 
  err: ['196', '✘'] 
}
def log msg
  sym = SYMBOLS[caller(0)[1][/`(\w+)'/, 1].to_sym]
  puts "\e[01;38;05;#{sym.first}m#{sym.last} #{generator.name}\e[0m: #{msg}"
end

def err msg
  log "#{msg}\nAborting...\n\n"
  exit 1
end

def nfo msg ; log msg ; end
def scs msg ; log msg ; end
def wrn msg ; log msg ; end
private_method :log