2012-08-10 12 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 

Che cosa sta succedendo? Come posso risolvere questo?`exec ': stringa contiene byte null (ArgumentError)

risposta

10

La stringa cmd ha un byte nullo (cioè zero) in qualche modo. Utilizzando puts non verranno visualizzati tutti i byte nulli, faranno solo essere lasciato fuori dell'uscita:

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 

Probabilmente si dovrebbe verificare come i tuoi rep, svn_user e pxs variabili vengono popolate per vedere se è possibile tenere traccia l'origine di questi byte null, ma come soluzione rapida è possibile utilizzare gsub! per rimuoverli:

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