Per creare file in Ruby abbiamo almeno due modalità differenti:

  • usando File.new
  • usando File.open

La differenza tra i due è che File.open può essere usato in un blocco di codice, mentre File.new no.

Nei sistemi *NIX, ogni utente ha uno specifico UID (id univoco).

In genere lo UID di root è zero.

Usando il modulo Process, con Ruby è molto semplice identificare se l'utente che ha lanciato il programma è root o meno.

E questo può essere utile in molti casi.

Nel caso di script che eseguono operazioni abbastanza lunghe, può essere utile calcoarne la durata, in modo anche da cpire se si riesce a ridurre i tempi di esecuzione.

In Ruby ottenere il tempo di esecuzione è abbastanza facile usando il modulo Time.

Oggi vediamo le due righe di codice necessarie per cancellare file in Ruby.

Creeremo una classe con un solo metodo.

Questo metodo si occuperà di controllare l' effettiva esistenza del file indicato, e in caso affermativo di cancellarlo.

Non sono richiesti moduli aggiuntivi.

Dopo aver visto come eseguire una connessione FTP, vediamo come eseguire l' upload di un file.

Partiremo sempre da questa classe, alla quale aggiungeremo un metodo.

La classe Net::FTP di Ruby, ha due metodi per eseguire l'upload:

  • putbnaryfile -> trasferisce in modalità binaria
  • puttextfile -> trasferisce in ASCII

Una o l'altra dipende anche dal file che dovete inviare.

Continuando con Ruby, oggi vediamo come eseguire una connessione ad un server FTP.

Non sono richieste "gems" da installare; il modulo FTP è compreso nell'installazione core, va solo richiamato.

Creiamo, quindi, una classe con tre metodi:

  • connessione
  • listing dei file
  • disconnessione

Leggendo in giro, ho visto che ci sono vari modi per creare file ZIP in Ruby.

Noi useremo il modulo rubyzip!

Quindi prima di tutto dobbiamo installarlo:

$ gem install rubyzip

A questo punto creiamo una classe per creare il file ZIP di una intera directory.

Oggi vediamo un dei vari modi per eseguire il parsing di una stringa JSON presa da un servizio remoto, usando Ruby.

Prima di tutto, (ri)vediamo la classe per la connessione al servizio remoto:

require "net/http"

class HttpConnection
    def get_connection
        uri = URI.parse("http://www.sito.com/file.json")
        http = Net::HTTP.new(uri.host, uri.port)
        req = Net::HTTP::Get.new(uri.request_uri)
        res = http.request(req)
        return res.body
    end
end

Questa classe la useremo nella nostra classe per il parsing.

Purtroppo non ho moltissimo tempo da dedicare allo studio di Ruby, ma devo dire che mi sorprende sempre quando faccio una cosa nuova; principalmente nelle poche righe di codice necessarie!

Oggi vediamo come possiamo listare ricorsivamente i file di una directory.

Ci sono vari modi per farlo, ed io ho usato il modulo find.

Piccolo snippet di codice per leggere file con Ruby.

Come capita anche per Python, le righe di codice per eseguire questa operazione sono molto poche.

Supponiamo di avere un file con una lista di nomi.