2015-01-13 15 views
6

Sto usando il plugin vagrant-winnfsd per aggiungere il supporto NFS con Vagrant su un host Windows 8.1. Sto usando l'ospite di Ubuntu 14.04.Errore di input/output usando Vagrant & winnfsd

Sto utilizzando questa configurazione per eseguire un'app Rails. Tutto fa funzionare grande tranne quando Rails/Carrierwave tenta di eliminare i file dalla directory tmp che genera questo errore:

Errno::EIO (Input/output error @ dir_s_rmdir - /vagrant/myproject/public/uploads/tmp/1421108602-18479-5242): 

Ecco la parte relavent del mio file Vagrant:

config.vm.network "private_network", type: "dhcp" 
config.vm.synced_folder ".", "/vagrant", type: "nfs" 

Tutte le idee su come risolvere questo?

+0

questi file vengono creati dal guest o esistono già nell'host? ogni possibilità che si tratti di una sorta di errore di autorizzazione? – m1keil

+0

@MichaelS Il file viene caricato sull'host e il file temporaneo viene creato dall'app in esecuzione sul guest – jesal

+1

Sembra che questo sia un problema con winnfsd: https://github.com/GM-Alex/vagrant-winnfsd/issues/ 22 – m1keil

risposta

2

Sono finalmente riuscito a risolvere questo problema utilizzando this approach suggerito in uno dei ticket GitHub.

In sostanza si tratta di Rails di puntamento e Carrierwave ad una directory al di fuori della cartella/vagabonda per scaricare i file tmp in al fine di evitare di incorrere in eventuali problemi di blocco/autorizzazione:

# config/initializers/01_patch_tmpdir.rb 

class Dir 
    def self.tmpdir 
    '/home/vagrant/rails_tmp/' 
    end 
end 

CarrierWave.configure do |config| 
    config.cache_dir = '/home/vagrant/uploads_tmp/tmp/uploads' 
    config.root = '/home/vagrant/uploads_tmp/tmp' 
end 

ENV['TMPDIR'] = Dir.tmpdir 

questo punto è possibile andare avanti e aggiungi quel file al tuo .gitignore in modo che non interferisca con le altre persone che lavorano sul tuo progetto.