2015-01-13 43 views
6

Używam wtyczki vagrant-winnfsd do dodania obsługi NFS z Vagrant na hoście z systemem Windows 8.1. Używam gościa Ubuntu 14.04.Błąd wejścia/wyjścia za pomocą Vagrant & winnfsd

Używam tego ustawienia do uruchomienia aplikacji Rails. Wszystko działa świetnie z wyjątkiem gdy Rails/Carrierwave próbuje usunąć pliki z katalogu tmp który generuje ten błąd:

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

oto relavent część mojego Vagrant pliku:

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

Wszelkie pomysły, w jaki sposób rozwiązać to?

+0

te pliki są tworzone od gościa lub już istnieją na hoście? jest szansa, że ​​jest to jakiś błąd uprawnień? – m1keil

+0

@MichaelS Plik jest przesyłany na hoście, a plik tymczasowy jest tworzony przez aplikację działającą pod adresem gościa – jesal

+1

Wygląda na to, że problem dotyczy winnfsd: https://github.com/GM-Alex/vagrant-winnfsd/issues/ 22 – m1keil

Odpowiedz

2

W końcu udało mi się rozwiązać ten problem, używając opcji this approach zasugerowanej w jednym z biletów GitHub.

Zasadniczo polega wskazujące Rails i Carrierwave do katalogu spoza/Vagrant folderze zrzucić TMP pliki do w celu uniknięcia uruchomiony w każdej kwestii blokowania/uprawnień:

# 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 

Można teraz śmiało i dodaj ten plik do pliku .gitignore, aby nie przeszkadzał innym osobom pracującym nad twoim projektem.