【问题标题】:Files don't update in vagrant when saved on host computer?保存在主机上时文件不会在 vagrant 中更新?
【发布时间】:2014-07-12 03:23:27
【问题描述】:

我使用 Vagrant 作为 Rails 开发环境。我只使用主机编辑 sublime text 中的文件(即 Ruby、Rails、Postgres 和 Nginx 都在 vagrant vm 上)。

问题是,如果我对文件(1-3 个字符)进行小改动,刷新浏览器不会立即显示更新。我必须重新启动 nginx 或添加一些空行并再次保存以查看更新。

这可能是什么原因造成的?我已经尝试了所有方法来解决这个问题。

这是我的流浪文件:

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "xyz.box"
  config.vm.box_url = "http://domain.com/xyz.box"

  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.synced_folder ".", "/vagrant", :nfs => true

  config.vm.provider "virtualbox" do |vb|
    vb.customize [
      "modifyvm", :id,
      "--memory", "1024",
      "--natdnsproxy1", "on",
      "--natdnshostresolver1", "on"
    ]
  end
end

我在 Mac OS X 上并使用 Virtual Box 作为提供程序。 vagrant box 是 Ubuntu 14.04。

【问题讨论】:

    标签: ruby-on-rails nginx vagrant vagrantfile


    【解决方案1】:

    原来问题是 Sublime Text 的默认“原子保存”功能造成了这个问题。

    将以下内容添加到您的 Sublime Text 首选项文件将解决此问题:

    "atomic_save": false

    【讨论】:

    • 我曾希望这是我的问题的解决方案,但this answer 显示自 Build 3080(2015 年 3 月)以来,atomic_save 已默认关闭。 (我检查了我的默认偏好以确保是这种情况。)红鲱鱼。
    【解决方案2】:

    对于使用 Virtualbox 的 Apache 和 nginx 来说,这是一个已知问题——vagrant (@see this vagrant issue) 也是如此。 sendfile 内核模式不会在共享磁盘文件夹上刷新。

    要修复它,请在 nginx 配置上使用:

    sendfile off
    

    【讨论】:

      【解决方案3】:

      您是否尝试过“rsync”选项?它应该不难设置并且应该更可靠。

      config.vm.synced_folder ".", "/vagrant", type: "rsync"
      

      Vagrant 1.5 提供此功能。

      https://www.vagrantup.com/blog/feature-preview-vagrant-1-5-rsync.html

      【讨论】:

        【解决方案4】:

        就像 Jacob 说的,关闭原子保存。我想补充一点,这是一个非常错误和危险的功能。如果你是 sublime text 3 用户,你应该做的第一件事就是关闭它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-13
          • 2016-09-15
          • 2019-10-31
          • 1970-01-01
          • 2023-03-04
          • 1970-01-01
          • 2018-04-29
          • 1970-01-01
          相关资源
          最近更新 更多