是什么导致rails应用程序中的Listen错误

时间:2018-01-30 17:58:26

标签: ruby-on-rails

所以我在schema.rb文件中做了一些更改,据我所知,这就是导致此错误的原因。另外我想我删除了一些不正确的迁移文件。

FATAL: Listen error: unable to monitor directories for changes.

它出现在我在终端上使用的每个rails命令

我已经将此视为解决方案

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

但我不知道它做了什么。有人可以解释这里发生了什么。正如解决方案在做什么以及实际导致此错误的原因。

1 个答案:

答案 0 :(得分:0)

阅读about inotify:inotify man page

inotify API提供了一种监视文件系统事件的机制。 Inotify可用于监视单个文件或监视目录。监视目录时,inotify将返回目录本身的事件以及目录中的文件。

在您可以监控的文件数量上遇到系统限制并不罕见。

您可以通过执行以下命令获取当前的inotify文件监视限制:

$ cat /proc/sys/fs/inotify/max_user_watches

如果此限制不足以监视目录中的所有文件,则必须增加限制。

您可以使用以下方式设置临时新限制:

$ sudo sysctl fs.inotify.max_user_watches=524288
$ sudo sysctl -p

如果您希望永久限制,请使用:

$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p

gem listen已达到此限制,因此您需要增加它...