3

我使用 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 作为提供程序。流浪者盒子是 Ubuntu 14.04。

4

4 回答 4

6

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

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

"atomic_save": false

于 2014-06-14T14:58:19.717 回答
2

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

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

sendfile off
于 2014-05-23T14:12:42.810 回答
1

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

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

此功能可从 Vagrant 1.5 获得。

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

于 2014-05-23T04:26:42.070 回答
-2

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

于 2014-11-08T18:41:54.870 回答