如何忽略带有 ruby guard 的目录以进行 livereload?

How to ignore directory with ruby guard for livereload?

我正在使用 Xcode 作为我的开发 IDE 编辑一些网页和 css 我正在从事的项目。为了启用实时重新加载功能,我正在使用配置有 'livereload' 插件的 ruby 'guard' 程序,它运行良好。

但是,Xcode 似乎将当前正在编辑的文件保存到与原始文件相同的目录中名为“(Xcode 保存的文档)”的临时目录中。当然,这是不断触发守卫脚本,重新加载浏览器。

我尝试了各种忽略选项,但似乎没有任何效果...这是我当前的保护文件...我可以添加或更改什么以使其忽略 Xcode 目录,无论在哪里它在监视目录下?

guard 'livereload', grace_period: 0.5 do
  interactor :off

  directories %w(resources/img resources/devel)

  ignore %r{\(A\sDocument\sBeing\sSaved\sBy\sXcode\)}

  compiled_extensions = {
    css: :css,
    js: :js,
  }

  static_extensions = {
    html: :html,
    png: :png,
    gif: :gif,
    jpg: :jpg,
    jpeg: :jpeg,
  }

  compiled_exts = compiled_extensions.values.uniq
  watch(%r{.+\.(#{compiled_exts * '|'})$})

  static_exts = static_extensions.values.uniq
  watch(%r{.+\.(#{static_exts * '|'})$})
end

我认为当检测到文件被更改时,可能有一些方法 运行 一些 Ruby 代码,如果忽略不起作用,也许检查目录。 .但我从来没有在 Ruby 中编码,而且让实时重载保护脚本首先工作就已经够棘手了。

实际上,问题不在于 guard,而在于 Apple 的版本控制文件保存,我没有意识到它已为网络驱动器启用...版本控制功能不起作用。叹息

在终端中执行以下命令仅关闭 Xcode 的版本控制(内部称为持久性?)功能,这解决了我的问题:

defaults write com.apple.dt.Xcode ApplePersistence -bool False

我也真的不需要为我的源代码启用持久性,因为我已经在使用版本控制了。

我回答了我自己的问题,以防有人遇到同样的问题。