17
TOI AUSSI TRAITE DU CSV AVEC TON RUBY Un retour d'expérience

Csv

Embed Size (px)

DESCRIPTION

Un retour d'expérience sur comment traiter des fichiers CSV. C'est simple et basique, mais c'est mieux en le disant.

Citation preview

Page 1: Csv

TOI AUSSI TRAITE DU CSV AVEC TON RUBY

Un retour d'expérience

Page 2: Csv

NICOLAS LEDEZ

Orange Business Services / IT&L@bs

DevCamp Rennes

Rennes On Rails

Rennes DevOps

Graphotec Cloud

Page 3: Csv

J'AI :

Un fichier CSV de 600 lignes

Une cible de 100 fichiers XML

Page 4: Csv

CHOIX DES ARMES

À la main

Macro VBA Excel

Perl

Python

Ruby

Page 5: Csv

TDD 1/4

Page 6: Csv

TDD 2/4

Page 7: Csv

TDD 3/4

Page 8: Csv

TDD 4/4

Page 9: Csv

POUR COMMENCER

def parse_csv(filename) @list = {}

lines = File.open(filename).readlines lines[1..-1].each { |line| (fullname, login) = line.chomp.split(";")

Page 10: Csv

MAIS...

def parse_csv(filename) @list = {}

lines = File.open(filename).readlines lines[1..-1].each { |line| (firstname, lastname, login) = line.chomp.split(";")

Page 11: Csv

1 AN PLUS TARD

+----------------------+-------+-------+---------+---------+-----+-------+| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |+----------------------+-------+-------+---------+---------+-----+-------+| Libraries | 446 | 356 | 6 | 19 | 3 | 16 || spec/vsabuilder | 484 | 388 | 0 | 38 | 0 | 8 |+----------------------+-------+-------+---------+---------+-----+-------+

Code LOC: 356 Test LOC: 388 Code to Test Ratio: 1:1.1

Page 12: Csv

L'AGILITÉC'est aussi savoir tout casser

Page 13: Csv

UTILISER UNE LIB !

def parse(csv_filename, key) key_symbol = key.to_sym CSV.foreach(csv_filename, :col_sep =>';', :headers =>

true, :header_converters => :symbol) do |line| current_key = line[key_symbol] @content[current_key] = line endend

Page 14: Csv

3 JOURS APRÈS

+----------------------+-------+-------+---------+---------+-----+-------+| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |+----------------------+-------+-------+---------+---------+-----+-------+| Libraries | 58 | 48 | 2 | 7 | 3 | 4 || spec/lib | 157 | 122 | 0 | 6 | 0 | 18 |+----------------------+-------+-------+---------+---------+-----+-------+

Code LOC: 48 Test LOC: 122 Code to Test Ratio: 1:2.5

Rappel :+----------------------+-------+-------+---------+---------+-----+-------+| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |+----------------------+-------+-------+---------+---------+-----+-------+| Libraries | 446 | 356 | 6 | 19 | 3 | 16 || spec/vsabuilder | 484 | 388 | 0 | 38 | 0 | 8 |+----------------------+-------+-------+---------+---------+-----+-------+

Code LOC: 356 Test LOC: 388 Code to Test Ratio: 1:1.1

Page 15: Csv

SOURCES

https://github.com/nledez/csv2other

Page 16: Csv

CONCLUSION

Page 17: Csv

@NLEDEZ