2013-04-26 17 views
7

Sto lavorando attraverso il tutorial di Michael Hartl Rails che è eccellente finora. Sono nel capitolo Advanced Setup, dove si passa attraverso la configurazione dell'ambiente Rails in modo da favorire TDD. Ho installato Guard e funziona correttamente durante l'esecuzione dei test che ho nella mia specifica/cartella. Ma poi, sputa questo errore:La guardia non carica 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) 

Ho installato wdm. Non so perché non può caricarlo.

Sembra che Listen stia riscontrando problemi durante il caricamento di WDM. Si chiude dopo aver detto "La guardia ora sta guardando ..."

Non ho riprodotto il resto della traccia di stack per ovvi motivi. Ho installato Rails usando l'ultimo Rails Installer. Cosa sta succedendo qui? Devo preoccuparmi di questo? Sembra funzionare almeno in parte ...

+3

'gem installa wdm'? – Yule

+0

Ho dimenticato di aggiungere che in realtà l'ho fatto. Questo è ciò che mi sta incasinando. Devo aggiungere che ho due installazioni Ruby sul mio sistema. Quello che è venuto con RailsInstaller, e quello che stavo usando prima. Ho eseguito "gem install wdm" sia dalla mia shell normale che dalla shell RailsInstaller, ma non riesco a farlo funzionare. –

+0

Ho disinstallato sia l'installazione precedente di Ruby sia l'installazione di RailsInstaller e ho reinstallato solo RailsInstaller. Sto ancora avendo lo stesso problema. –

risposta

14

Quindi, ecco cosa è successo. Per impostazione predefinita, su Windows, si suppone che Listen utilizzi il polling per verificare la presenza di modifiche al filesystem. Per qualche motivo stava cercando di usare WDM. Quindi, ho dovuto avere questo al mio Gemfile:

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

Forse Guard fa Listen provare a utilizzare WDM?

+0

Lo fa e dovrebbe. https://github.com/guard/listen/issues/149 Sfortunatamente non funziona su atm ma il polling delle guardie senza wdm è praticamente inutile se il livereload fa parte del flusso di lavoro. – isimmons

1

Non riesci a trovare dove ho ottenuto questa raccomandazione da, ma mi è stato dato il seguente per l'esecuzione di guardia tra Windows e Linux:

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

Il falso di fare in modo le gemme vengono effettuate esclusivamente da caricare quando in esecuzione su quella piattaforma. L'ambiente Windows potrebbe richiedere mswin anziché mingw, a seconda dell'installazione ruby ​​che stai utilizzando.

Problemi correlati