新手问题 在 Bash on Ubuntu on Window 环境下 rb-inotify 的问题

maxff00 · 2016年08月19日 · 最后由 maxff00 回复于 2016年08月23日 · 2626 次阅读

环境:bash on ubuntu on window rails 的版本:rails 5 ruby 的版本:2.3.0 rvm 的版本:1.27.0 rb-inotify 的版本:0.9.7

在 rails server 时出现错误:

.rvm/gems/ruby-2.3.0/gems/rb-inotify-0.9.7/lib/rb-inotify/watcher.rb:74:in `initialize': Invalid argument - Failed to watch ".rvm/gems/ruby -2.3.0/gems/activesupport-5.0.0.1/lib/active_support/locale": the given event mask contains no legal events; or fd is not an inotify file descriptor. (Errno::EINVAL)

查不出解决方法,请问大家知不知道解决的方法?

Windows 10 周年更新时的 BashOnWindows 还有很多坑,比如不支持 inotify。Rails 5.0.0 引入了 ActiveSupport::EventedFileUpdateChecker 导致这里有兼容问题(微软的锅)。你可以试试 Rails 4.2.6。

这里有别人的临时解决方法,注释掉一些配置文件,就能正常跑起来。

不过已经有用户提了uservoice,最新版的 release note 里提到inotify了,说不定就可以支持 Rails 5 了。感兴趣的话可以折腾一下。

话说刚出来的时候我折腾了很多次,每次错误都不重样,说明目前太不稳定了。虽然有时可以正常跑起来,但总感觉反应没有想象中快(可能是我电脑的问题),所以我最后放弃了。

#1 楼 @tanete 用你提供的临时解决方法,注释掉 Gemfile 文件中的 #gem 'listen', '~> 3.0.5',#gem 'spring', #gem 'spring-watcher-listen', '~> 2.0.0'以及 config/environments/development.rb 文件中的#config.file_watcher = ActiveSupport::EventedFileUpdateChecker 就可以用了。谢谢你的解答😄

需要 登录 后方可回复, 如果你还没有账号请 注册新账号