File.open("abc.bin","w") - dziwny bug

Wykonują poniższy kod na moim komputerze:

File.open("text.bin","w"){|f| f.puts "XXX"}

dostaję bardzo niespodziewaną zawartość pliku “text.bin”:

This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Jeśli nazwa pliku to np “text.txt” to wszystko działa jak należy.

Czy ktoś zauważył podobne zachowanie Rubiego?

ruby -v

ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]

uname -a

Linux xps 2.6.30-gentoo-r4 #11 SMP Tue Dec 29 01:37:06 CET 2009 x86_64 Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz GenuineIntel GNU/Linux

Dodam, że na maszynie z Debianem błąd nie występuje.

faktycznie baaardzo dziwne… na maku (10.6 + ruby 1.9.2(na 1.8.7 tez) ) problemu nie ma. Może złoś buga?

Może znalazłeś easter egg?:smiley:

Pod systemem MacOSX i ruby 1.9.3dev (2010-09-06 trunk 29190) [x86_64-darwin10.4.0] takiego zachowanie nie stwierdzam.

W sumie nie jest powiedziane, że to błąd/feature Rubiego - równie dobrze może być coś w wywołaniu systemowym.
Jest to o tyle dziwne, że jeśli jest write() to też jest taki wynik, ale mogę np. przekazać ten plik do Marshl.dump i wtedy wszystko jest ok.

Zgłoszę, jeśli ktoś potwierdzi, że u niego też występuje. W przeciwnym razie - tak jak pisałem, to może być błąd gdzieś indziej.

Może odpal ten skrypt przez strace i zobacz co się dzieje ? U mnie na Gentoo z 1.9.2-p0 nie ma takiego problemu.

Może zrób f.close? Ja na linux’ie bez tego zawsze mam jakiś cyrk ;]

To twoja maszyna w 100% czy to jakiś VPS ?

Jest w bloku, więc f.close robi się samo…

Tak moja maszynka i już wiem gdzie jest błąd :slight_smile: Zawartość przeglądałem przez

less abc.bin

Jak robię cat’em to wszystko jest ok :slight_smile: Dziwne, bo na innych systemach less nie bierze tego pod uwagę. No cóż, nie wpadłem wcześniej że tutaj może być problem.