2012-08-10 17 views
7
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 

' `exec: string Ne oluyor

cmd = "snv co #{rep} --username #{svn_user} --password #{pxs}" 

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

exec(cmd) 
boş byte (ArgumentError) içerir? Bunu Nasıl Çözebilirim?

cevap

10

cmd dizginiz bir şekilde bir null (yani sıfır) bayt elde etti. herhangi boş bayt görünmeyecektir puts kullanarak, onlar sadece çıkış dışında kalan sorulacak: Muhtemelen rep, svn_user ve pxs değişkenleri izlemek görmek için doldurulan ediliyor nasıl kontrol etmelidir

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 

Bu boş baytların kaynağından aşağıya doğru ancak hızlı bir düzeltme olarak, bunları kaldırmak için gsub!'u kullanabilirsiniz:

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