Membaca File CSV Ke dalam objek di Ruby
Pada contoh ini saya akan menggunakan file CSV dengan format seperti ini:
Dalam file ini terdapat 3 kolom, yaitu nama produk, harga, dan kuantitas. Terdapat 3 baris data yang ada dalam file ini. Untuk memberikan enkapsulasi pada data, saya akan membuat custom class dengan nama Gadget sebagai objek yang akan digunakan dalam menampung tiap baris data dalam file.
Untuk menggunakan objek dengan kelas CSV, terlebih dahulu kita perlu memasukkan library csv dengan menggunakan syntax require diikuti nama library.
irb > require 'csv'
=> true
Kita akan menggunakan class method CSV, yaitu foreach untuk membaca data yang ada dalam file csv yang kita berikan. Method ini membutuhkan 1 argumen wajib, yaitu path dari lokasi file csv dalam komputer kita yang akan kita buka. Pada argumen opsional, saya akan memberikan hash dengan simbol key headers dan value true. Dengan headers ini, maka method ini akan membaca baris yang pertama dari file tersebut sebagai kunci yang akan digunakan untuk mendapatkan data dari tiap baris data yang akan diproses oleh blok. Saya akan menggunakan sebuah array kosong untuk memasukkan setiap objek gadget baru yang akan kita buat. Di dalam argumen yang digunakan dalam menginisialisasi objek gadget, kita akan menggunakan key berupa nama kolom untuk mendapatkan value dari hash row.
irb > gadgets = []
Dapat terlihat hasil dari file CSV yang berhasil dibaca dan digunakan sebagai argumen dalam membuat objek gadget, kemudian tiap baris dimasukkan dalam array gadgets.
Menulis File ke dalam format CSV dari objek Ruby
Sebelumnya saya akan membuat 3 obbjek gadget yang akan saya masukkan dalam sebuah array dengan nama variabel gadgets. Struktur data ini yang akan digunakan dalam memasukkan data objek dari Ruby ke dalam file CSV.
Untuk menulis file dalam format CSV dari objek yang ada dalam Ruby, kita dapat menggunakan method kelas CSV, yaitu open disertai dengan argumen pertama berupa path beserta filename yang akan kita buat, dan argumen kedua berupa jenis operasi pada file. Untuk jenis operasi saya akan menggunakan w+, dimana Ruby akan berusaha menulis file yang ada pada path tersebut, bila file belum ada, maka Ruby akan membuatnya dan trunkasi penulisan akan dimulai dari awal file.
Pada baris pertama yang ada dalam blok, csv digunakan sebagai variabel yang digunakan untuk memasukkan data yang ada pada tiap row dengan operator <<. Format row dari tiap data yaitu berupa array yang didalamya berisi jumlah kolum data yang kita inginkan. Pada baris pertama, saya memasukkan kolom untuk header yaitu produk, harga, dan jumlah. Berikutnya dengan method each maka dilakukan iterasi pada tiap objek yang ada dalam array gadgets. Dalam iterasi tiap objek maka akan data akan dimasukkan dengan menggunakan array yang didalamnya berisi informasi produk yang didapatkan melalui aksesor dari objek gadget. Setelah proses selesai maka file gadget2.csv akan dibuat dan dapat dilihat hasilnya di bawah ini.
Tidak ada komentar:
Posting Komentar