2012-08-10 19 views
7
cmd = "snv co #{rep} --username #{svn_user} --password #{pxs}" 

puts cmd # this code wotks and prints all vars values normally 

exec(cmd) 
xpto.rb:69:in `exec': string contains null byte (ArgumentError) 
    from xpto.rb:69 
$ ruby -v 
ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-linux] 
$ gem -v 
1.3.7 

¿Qué está pasando? ¿Como puedo resolver esto?`exec ': cadena contiene byte nulo (ArgumentError)

Respuesta

10

Su cadena cmd tiene un byte nulo (es decir, cero) de alguna manera. Usando puts no se mostrará ningún bytes nulos, ellos sólo se quedan fuera de la salida:

1.8.7 :001 > exec "\0" 
ArgumentError: string contains null byte 
     from (irb):1:in `exec' 
     from (irb):1 
1.8.7 :002 > puts "n\0n" 
nn 
=> nil 

Usted probablemente debería comprobar cómo se están pobladas sus rep, svn_user y pxs variables para ver si se puede realizar un seguimiento por el origen de estos bytes nulos, pero como solución rápida puede usar gsub! para eliminarlos:

cmd.gsub!(/\0/, '')