Verileri veritabanından okumam ve ardından bir metin dosyasına kaydetmem gerekiyor.
Bunu Ruby'de nasıl yapabilirim? Ruby'de herhangi bir dosya yönetim sistemi var mı?
Çoğu durumda tercih edilen yaklaşım budur:
File.open(yourfile, 'w') { |file| file.write("your text") }
File.open`a bir blok aktarıldığında, blok sona erdiğinde File nesnesi otomatik olarak kapatılacaktır.
Eğer File.open
dosyasına bir blok aktarmazsanız, dosyanın doğru şekilde kapatıldığından ve içeriğin dosyaya yazıldığından emin olmanız gerekir.
begin
file = File.open("/tmp/some_file", "w")
file.write("your text")
rescue IOError => e
#some error occur, dir not writable etc.
ensure
file.close unless file.nil?
end
Bunu dokümantasyon'de bulabilirsiniz:
static VALUE rb_io_s_open(int argc, VALUE *argv, VALUE klass)
{
VALUE io = rb_class_new_instance(argc, argv, klass);
if (rb_block_given_p()) {
return rb_ensure(rb_yield, io, io_close, io);
}
return io;
}
Ruby Dosya sınıfı size ::new
ve ::open
ın giriş ve çıkışlarını verecektir, ancak onun ebeveyni olan IO sınıfı, #read
ve #write
ın derinliğine iner.