Pregunta

I tienen el siguiente segmento Buildr BuildFile:

require "buildr/protobuf"

....

define "protobuf-stuff" do
  pbs = protoc(
        Dir[_("pbsrc/some/pkg/*.proto")], { 
        :include => [_("pbsrc")],
        })

  comp = compile.from(pbs).with(PROTOBUF_LIB) # MARK
  package :jar
end

Buildr es 1.4.4, instalado con la secuencia de comandos de Linux instalar en dos machnies.

  • Máquina 1: 32 bits Debian, rubí 1.8.7 (2008-08-11 Patchlevel 72) [i486-linux]
  • Máquina 2: Ubuntu de 64 bits, rubí 1.8.7 (2010-01-10 Patchlevel 249) [x86_64-linux]

Máquina de archivo de todo lo compila 1. 2 de la máquina falla en el lugar MARK-ed, con

Buildr aborted!
TypeError : can't convert Rake::FileTask into String
/usr/lib/ruby/gems/1.8/gems/buildr-1.4.4/lib/buildr/core/application.rb:414:in `raw_load_buildfile'
/usr/lib/ruby/gems/1.8/gems/buildr-1.4.4/lib/buildr/core/application.rb:218:in `load_buildfile'
/usr/lib/ruby/gems/1.8/gems/buildr-1.4.4/lib/buildr/core/application.rb:213:in `load_buildfile'

Ahora puede ver que es un pbs FileTask y no una cadena .. pero ¿cómo es que una máquina acepta, el otro no? ¿Hay una conversión forzada a cadena?

Algunas trazas Buildr están unidos en http://pastebin.com/nf4HiYx9 .

Gracias.

¿Fue útil?

Solución 2

pensé que la adición de .to_s ayuda y todo está bien. Pero pude apreciar un revelador respuesta exactamente donde se perdió la conversión implícita, y por qué es bueno (si es así).

/ de mi comentario anterior /

Otros consejos

El StackTrace en Pastebin es muy diferente de la StackTrace pegado aquí, de lo que puedo ver.

Cuando se define el método protoc? ¿Es parte del núcleo Buildr?

La razón por la cual se produce un error en una máquina y no la otra podría ser la versión de Rubí que tiene, dado que la línea que no es "si File.exist? Senda". ruta no se supone que es una cadena, pero es probable que convierte en una cadena en un caso pero no en el otro.

La solución general es añadir una llamada después de llamar protoc (...), protoc (...) mapa.. (Y: to_s)

Espero que esto ayudó.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top