2013-10-11 10 views
8

Sto avendo questo errore durante il tentativo di eseguire il comando:Guardia Dare "costante non inizializzata Ascolta :: Turnstile (NameError)" Errore

guard 

Questo è un app ho sviluppato per un po ' prima di tentare di installare guard ...

sto seguendo le istruzioni del tutorial di Ryan Bates' in guardia:

http://railscasts.com/episodes/264-guard

Ecco il mio file Gem.

source 'https://rubygems.org' 

gem 'rails', '3.2.14' 
gem 'rake' 
gem 'mysql2' 
gem 'bcrypt-ruby' 
gem 'devise' 
gem 'rails_admin' 
gem 'jbuilder' 
gem 'gon' 
gem 'dynamic_form' 
gem 'therubyracer', :require => 'v8' 
gem 'jquery-rails' 
gem 'jquery-ui-rails' 
gem 'rails3-jquery-autocomplete' 
gem 'roo' 

group :assets do 
    gem 'sass-rails', '~> 3.2.4' 
    gem 'coffee-script', '~> 2.2.0' 
    gem 'uglifier', '~> 1.2.3' 
end 

group :development, :test do 
    gem 'capistrano' 
    gem 'bullet' 
    gem 'rvm-capistrano' 
    gem 'better_errors' 
    gem 'rspec-rails', '2.10.0' 
    gem 'awesome_print' 
    gem 'wirble' 
    gem 'thin' 
    gem 'guard-rspec' 
    gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i 
end 

group :test do 
    gem 'capybara', '1.1.2' 
    gem 'faker' 
    gem 'factory_girl_rails' 
    gem 'spork', '~> 1.0rc' 
end 

Ecco l'errore completo:

app3 git:(write-tests) ✗ guard 
    /Users/Nick/.rvm/gems/ruby-1.9.3-p448/gems/guard-1.4.0/lib/guard.rb:47:in `setup': uninitialized constant Listen::Turnstile (NameError) 
     from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/gems/guard-1.4.0/lib/guard.rb:155:in `start' 
     from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/gems/guard-1.4.0/lib/guard/cli.rb:104:in `start' 
     from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/gems/thor-0.18.1/lib/thor/command.rb:27:in `run' 
     from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/gems/thor-0.18.1/lib/thor/invocation.rb:120:in `invoke_command' 
     from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/gems/thor-0.18.1/lib/thor.rb:363:in `dispatch' 
     from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/gems/thor-0.18.1/lib/thor/base.rb:439:in `start' 
     from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/gems/guard-1.4.0/bin/guard:6:in `<top (required)>' 
     from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/bin/guard:23:in `load' 
     from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/bin/guard:23:in `<main>' 
     from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/bin/ruby_noexec_wrapper:14:in `eval' 
     from /Users/Nick/.rvm/gems/ruby-1.9.3-p448/bin/ruby_noexec_wrapper:14:in `<main>' 

risposta

9

ho avuto un problema simile con i miei rotaie 3.2.13 app.

La parte confusa era che non avevo gem 'guard' nel mio Gemfile, ma la gemma era ovviamente una dipendenza di quanto segue:

gem 'guard-rspec' 
gem 'guard-livereload' 
gem 'guard-cucumber' 

tutto ha funzionato fino ad un recente bundle update, che ha portato in una versione molto più recente di listen, una delle dipendenze di guard, mentre lo stesso guard è stato trattenuto (non so perché). Quindi l'errore che hai riscontrato è stato guard durante il tentativo di richiamare una classe che non esiste più in listen.

Il problema è stato risolto aggiungendo esplicitamente la versione corrente di guard a Gemfile:

gem 'guard', '>=2.1.0' 

e naturalmente re-bundling.

+0

Ho aggiunto quella versione specifica di guardia e ho aggiunto anche "guard-livereload". Questo è quello che ha fatto il trucco. Grazie per l'aiuto! –

+2

L'invocazione di "bundle" non funziona per me. Ho eseguito esplicitamente il comando "bundle update guard" – Darkside

13

Non è gem "guard" nel file gioiello.

Stavo ottenendo lo stesso errore.

Uno dei plugin che avevo incluso, guard-bundler, stava bloccando la versione di guardia a 1.4.0, mentre l'ultima versione di guardia è 2.0.5. La rimozione di quel plugin ha corretto l'errore. Non dimenticare di rimuovere il codice guard-bundler dal file di protezione.

Immagino che la tua gemma di guardia sia installata come gemma di sistema. Inseriscilo nel tuo file gem ed eseguilo con bundle exec.

C'è anche un conflitto di dipendenze tra guardia e better_errors su coderay. L'ho bloccato a 1.0.5 per averli entrambi installati. Non ho testato alcuna funzionalità relativa al coderay per vedere se quella versione causa problemi a better_errors.

gem 'coderay', '~> 1.0.5'

+2

Aggiornamento da guardia 1.4.0 a guardia 2.0.5 è stato il trucco per me. –