Search code examples
ruby-on-rails-4vagrantwindows-8.1ubuntu-14.04nfs

Input/output error using Vagrant & winnfsd


I'm using vagrant-winnfsd plugin to add NFS support with Vagrant on a Windows 8.1 host. I'm running Ubuntu 14.04 guest.

I'm using this setup to run a Rails app. Everything runs great except for when Rails/Carrierwave tries to delete files from the tmp dir which generates this error:

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

Here's the relavent portion of my Vagrant file:

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

Any ideas on how to resolve that?


Solution

  • I was finally able to resolve this issue by using this approach suggested in one of the GitHub tickets.

    Basically it involves pointing Rails and Carrierwave to a dir outside of the /vagrant folder to dump the tmp files into in order to avoid running into any lock/permission issues:

    # 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
    

    You can now go ahead and add that file to your .gitignore so it doesn't get in the way of other people working on your project.