Jekyll的"--auto"无法正常工作?

14

我刚刚重新安装了整个系统,并重新开始工作。在我的一些项目中,我使用并仍在使用Jekyll,但是我在使用--auto_config.ymlauto: true进行自动生成时遇到问题。它根本不起作用。使用jekyll --server --auto命令的输出为:

Configuration from /home/rafal/Documents/Projects/ruby-adventure/_config.yml
Auto-regenerating enabled: /home/rafal/Documents/Projects/ruby-adventure -> /home/rafal/Documents/Projects/ruby-adventure/_site
[2013-03-23 19:09:53] regeneration: 1 files changed
[2013-03-23 19:09:53] INFO  WEBrick 1.3.1
[2013-03-23 19:09:53] INFO  ruby 2.0.0 (2013-02-24) [x86_64-linux]
[2013-03-23 19:09:53] WARN  TCPServer Error: Address already in use - bind(2)
[2013-03-23 19:09:53] INFO  WEBrick::HTTPServer#start: pid=3288 port=4000
[2013-03-23 19:09:53] regeneration: 1 files changed
[2013-03-23 19:09:54] regeneration: 1 files changed
[2013-03-23 19:09:54] regeneration: 1 files changed
[2013-03-23 19:09:54] regeneration: 1 files changed
[2013-03-23 19:09:54] regeneration: 1 files changed
[2013-03-23 19:09:54] regeneration: 1 files changed
[2013-03-23 19:09:54] regeneration: 1 files changed

jekyll --no-auto --server 的输出为:

Configuration from /home/rafal/Documents/Projects/ruby-adventure/_config.yml
Building site: /home/rafal/Documents/Projects/ruby-adventure -> /home/rafal/Documents/Projects/ruby-adventure/_site
Successfully generated site: /home/rafal/Documents/Projects/ruby-adventure -> /home/rafal/Documents/Projects/ruby-adventure/_site
[2013-03-23 19:12:31] INFO  WEBrick 1.3.1
[2013-03-23 19:12:31] INFO  ruby 2.0.0 (2013-02-24) [x86_64-linux]
[2013-03-23 19:12:31] WARN  TCPServer Error: Address already in use - bind(2)
[2013-03-23 19:12:31] INFO  WEBrick::HTTPServer#start: pid=3327 port=4000

...所以没有错误弹出。网站生成得很好,但是当我更改文件时,它不会自动重新生成。有什么想法吗?


可以,可以重现。有时候更改文件后需要重新启动服务器,否则它无法获取更改。去GitHub项目页面报告一个错误吧。 - Konrad Rudolph
你使用的是哪个Jekyll版本?0.12.1吗?我用过它,它可以正确地工作,即在您编辑和保存正在被监视的文件后重新生成。从jekyll --no-auto --server得到的结果不应包括“regenation: 1 files changed”语句。 - Carlos Agarie
使用0.12.1版本时遇到了同样的问题。但非常奇怪的是,每当我保存“_config.yml”文件时,它突然会捕捉到所有其他地方所做的更改并按照应有的方式重新生成文件。有人也遇到了同样的问题吗? - simonrohrbach
2个回答

42

似乎是由于directory_watcher gem最近的更改导致的。将该gem回滚到之前的版本可以解决这个问题:

sudo gem uninstall directory_watcher && sudo gem install directory_watcher -v 1.4.1

是的,这也为我解决了问题。谢谢! - simonrohrbach
这个可以工作,但现在它在“5个文件已更改”上无限循环,而没有任何文件保存。有什么想法吗? - Joel Grannas
@JoelGrannas 安装 v1.0.0.beta4 版本,问题应该就解决了! - Alexander Ekdahl
1
这对我来说是解决方案,但我不得不从该命令中删除"sudo"。否则,当尝试卸载时,我会收到消息“INFO:gem“directory_watcher”未安装”。这可能与我的"GEM_HOME"为"/usr/local/"有关。 - Jian
对于使用RVM的人,请不要忘记删除两个“sudo”:gem uninstall directory_watcher && gem install directory_watcher -v 1.4.1(就像@Jian一样)。 - Dorian
显示剩余3条评论

3
我能够通过像@lilakai那样硬锁定directory_watcher gem来解决这个问题,但我用了不同的方法:
在我的gemfile中添加了这一行(在开发组内):
gem 'directory_watcher', '1.4'

并运行:

bundle update directory_watcher

一旦我这样做了(因为它将我的版本锁定在1.4,我通过Gemfile.lock确认),所有东西都正常工作。我更喜欢直接通过bundler管理所有的gem,而不是通过系统ruby。

在发布本文时,我使用Octopress的最新版本(https://github.com/imathis/octopress)遇到了这个问题。


感谢上帝发布这篇文章,我终于解决了rake watch循环错误。我将我的directory_watcher设置为1.4.4。 - backus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接