2015-01-13 19 views
6

Ich verwende vagrant-winnfsd Plugin, um NFS-Unterstützung mit Vagrant auf einem Windows 8.1-Host hinzuzufügen. Ich betreibe Ubuntu 14.04 Gast.Eingabe/Ausgabe-Fehler mit Vagrant & winnfsd

Ich verwende dieses Setup, um eine Rails App auszuführen. Alles läuft sehr gut, außer wenn Rails/Carrierwave versucht, Dateien aus dem tmp dir zu löschen, die diesen Fehler erzeugt:

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

Hier ist der relavent Teil meiner Vagrant-Datei:

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

Irgendwelche Ideen auf, wie man das lösen?

+0

Sind diese Dateien vom Gast erstellt oder bereits auf dem Host vorhanden? irgendeine Chance, das ist eine Art von Erlaubnis Fehler? – m1keil

+0

@MichaelS Die Datei wird auf den Host hochgeladen und die temporäre Datei wird von der App auf dem Gast erstellt. – jesal

+1

Sieht so aus, als ob dies ein Problem mit winnfsd ist: https://github.com/GM-Alex/vagrant-winnfsd/issues/ 22 – m1keil

Antwort

2

Ich konnte dieses Problem schließlich lösen, indem ich this approach schlug, das in einem der GitHub-Tickets vorgeschlagen wurde.

Im Grunde handelt es zeigt Rails und Carrierwave zu einem Verzeichnis außerhalb des/vagrant Ordner mit den tmp-Dateien in um Dump läuft in jede Sperre/Berechtigungsprobleme zu vermeiden:

# 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 

Sie können nun voran gehen und fügen Sie diese Datei zu Ihrem .gitignore hinzu, damit sie anderen Personen, die an Ihrem Projekt arbeiten, nicht im Weg steht.