¿Cómo obtener llamadas de FileUtils para generar sus acciones en un filtro de rastrillo?

StackOverflow https://stackoverflow.com/questions/8834414

  •  27-10-2019
  •  | 
  •  

Pregunta

Tengo un filtro de rastrillo que, en mi propia instalación de Ruby 1.9.3, genera correctamente el equivalente de shell Unix cuando uso un método FileUtils como cp, mkdir etc.

Sin embargo, en el stock Ruby que se envía con Mac OS X (específicamente 10.5), que es la versión 1.8.6, no hacen esto.

Me gustaría que emitieran los comandos a medida que se realizan. ¿Hay alguna forma de habilitar esto en el 1.8.6 Ruby de OS X, sin agregar? :verbose => true a cada llamada? (Que puede que ni siquiera funcione).

El filtro de rastrillo en cuestión es: https://github.com/dpkendal/tools-osx/blob/master/rakefile

¿Fue útil?

Solución

Eso no tiene sentido. 1.9.3 no debe hacer :verbose a menos que se le digas explícitamente que lo haga. Puede ver la implementación de mkdir En el 1.9.3 lib, por ejemplo:

  def mkdir(list, options = {})
    fu_check_options options, OPT_TABLE['mkdir']
    list = fu_list(list)
    fu_output_message "mkdir #{options[:mode] ? ('-m %03o ' % options[:mode]) : ''}#{list.join ' '}" if options[:verbose]
    return if options[:noop]

    list.each do |dir|
      fu_mkdir dir, options[:mode]
    end
  end

Ahí puede ver que el mensaje no se genera a menos que el :verbose La opción se suministra explícitamente.

Sin embargo para habilitar :verbose a través de todos FileUtils métodos que puedes simplemente include FileUtils::Verbose en tu espacio de nombres. Esto funciona tanto en 1.8 como en 1.9 Ruby:

irb(main):001:0> RUBY_VERSION
=> "1.8.7"
irb(main):002:0> include FileUtils::Verbose
=> Object
irb(main):003:0> mkdir 'fooof'
mkdir fooof
=> ["fooof"]

Por cierto, podría ser que Rake ya haga esto en 1.9.3, lo que explicaría por qué hace lo que hace en 1.9.3 y no en 1.8.6. No verifiqué esto, pero esa es la única explicación en la que puedo pensar.


Rake proporciona su propia extensión de FileUtils llamada Rake::FileUtilsExt. Este módulo tiene un verbose bandera. Para activarlo, simplemente agregue esto a la parte superior del archivo de rastrillo:

Rake::FileUtilsExt.verbose(true)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top