2010-01-25 4 views
21

L'applicazione My Rails gira su una macchina server Ubuntu.Rails - Creazione di file temporanei in modo portatile

ho bisogno di creare i file temporanei al fine di "mangime" loro di un secondo, applicazione indipendente (sarò con compiti rake per questo, nel caso in cui tale informazione sia necessaria)

La mia domanda è: che cosa è il modo migliore per creare campi temporanei su un'applicazione rails?

Dato che sono in ubuntu, potrei crearli su /tmp/whatever, ma cosa funzionerebbe solo in linux.

Vorrei che la mia applicazione fosse il più portabile possibile - in modo che possa essere installata su macchine Windows & mac, se necessario.

Qualche idea?

Grazie mille.

risposta

36

tmp/ è definitivamente il posto giusto per inserire i file.

Il modo migliore che ho trovato di creare file su quella cartella è utilizzare ruby's tempfile library.

Il codice simile a questo:

require 'tempfile' 

def foo() 
    # creates a temporary file in tmp/ 
    Tempfile.open('prefix', Rails.root.join('tmp')) do |f| 
    f.print('a temp message') 
    f.flush 
    #... do more stuff with f 
    end 
end 

Mi piace questa soluzione perché:

  • Genera automaticamente i nomi di file casuale (è possibile fornire un prefisso)
  • cancella automaticamente i file quando non sono più utilizzati. Ad esempio, se invocato su un'attività rake, i file vengono rimossi quando termina l'attività rake.
+7

'Rails.root.join ('tmp')', non '" # {Rails.root}/tmp "'. Il primo è più pulito e (probabilmente) più portatile. – skalee

+0

Buon punto. Risolto, grazie! – kikito

+0

Fantastico, che astrazione utile. – elsurudo

7

Le app di Rails hanno anche la loro directory tmp/. Immagino che sia sempre disponibile e quindi un buon candidato da usare e mantenere la tua applicazione portatile.