使用Vagrant& amp;输入/输出错误winnfsd

时间:2015-01-13 00:33:18

标签: ruby-on-rails-4 vagrant windows-8.1 ubuntu-14.04 nfs

我正在使用vagrant-winnfsd插件在Windows 8.1主机上添加Vagrant的NFS支持。我正在运行Ubuntu 14.04客户端。

我正在使用此设置来运行Rails应用。一切都运行得很好,除了Rails / Carrierwave尝试从tmp目录中删除文件时产生此错误:

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

这是我的Vagrant文​​件的相关部分:

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

有关如何解决问题的任何想法?

1 个答案:

答案 0 :(得分:2)

我终于可以使用其中一张GitHub门票中建议的this approach来解决此问题。

基本上它涉及将Rails和Carrierwave指向/ vagrant文​​件夹之外的目录以转储tmp文件,以避免遇到任何锁定/权限问题:

# 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

您现在可以继续将该文件添加到.gitignore中,这样就不会妨碍其他人处理您的项目。