2013-04-26 14 views
7

我正在通過邁克爾哈特爾的Rails教程,這是迄今爲止非常出色的教程。我在高級設置章節中,他在那裏通過一種有利於TDD的方式來配置Rails環境。我安裝了Guard,並且通過運行我在我的spec /文件夾中的測試,它可以正常運行。但後來,它吐出了這個錯誤:Guard不會加載WDM

C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/listen-1.0.2/lib/listen/adapter.rb:195:in `require': cannot load such file -- wdm (LoadError) 

我已經安裝了WDM。我不知道爲什麼它不能加載它。

聽起來似乎有加載WDM的問題。它在「守衛現在正在觀看......」後退出。

由於顯而易見的原因,我沒有複製其餘的堆棧跟蹤。我使用最新的Rails安裝程序安裝了Rails。這裏發生了什麼?我需要擔心這個嗎?它似乎至少部分工作...

+3

'gem install wdm'? – Yule 2013-04-26 09:36:36

+0

我忘了補充說我其實是這麼做的。這就是搞砸了我。我應該補充說我的系統上有兩個Ruby安裝。 RailsInstaller附帶的那個,以及之前使用的那個。我從我的常規shell和RailsInstaller shell運行'gem install wdm',但是我無法得到這個工作。 – 2013-04-26 09:42:48

+0

我卸載了以前的Ruby安裝以及RailsInstaller安裝,並僅重新安裝了RailsInstaller。仍然有同樣的問題。 – 2013-04-26 20:48:46

回答

14

所以這裏發生了什麼事。默認情況下,在Windows上,Listen應該使用輪詢來檢查文件系統的變化。出於某種原因,它試圖使用WDM。所以,我不得不把這個對我的Gemfile:

require 'rbconfig' 
gem 'wdm', '>= 0.1.0' if RbConfig::CONFIG['target_os'] =~ /mswin|mingw/i 

也許衛隊讓聽試圖使用WDM?

+0

它的確如此。 https://github.com/guard/listen/issues/149不幸的是,它不工作atm,但如果livereload是工作流程的一部分,沒有wdm的守衛輪詢幾乎是無用的。 – isimmons 2013-11-08 17:08:43

1

找不到在哪裏我得到了這個建議,但我得到了在Windows和Linux上運行後衛如下:

gem 'rb-inotify', github: 'nex3/rb-inotify', platforms: :ruby, require: false 
gem 'wdm', platforms: :mingw, require: false 

假的使它這樣的寶石只能試圖被加載時在該平臺上運行。您的Windows環境可能需要mswin而不是mingw,具體取決於您使用的是哪種ruby安裝。