2010-10-04 10 views
5

Ho installato growl + rspec + autotest sulla mia macchina Windows 7. Dal prompt dei comandi, quando digito 'rspec spec /' non funziona. I test verranno eseguiti solo se utilizzo 'rake spec /' + 'autotest'.Ottenere Rspec + autotest su Windows

Inoltre, sto eseguendo questi test: http://railstutorial.org/chapters/static-pages#code:default_pages_controller_spec (vale a dire molto, molto banale) e stanno prendendo 8.11 secondi.

Hanno anche esito negativo quando li eseguo, anche se non nell'esempio. Ho fatto tutto quello che il tutorial mi ha detto, il problema è che il tutorial non approfondisce l'installazione di rspec su una macchina Windows. Fornisce un collegamento, ma anche in questo caso devi unire le istruzioni insieme.

Gli errori che ricevo sono 'Failure/Error: Unable to find C to read failed line [31mundefined methord get' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x48336c0>'

Il secondo errore è molto simile a quella.

Ho anche installato Growl correttamente, perché ricevo una notifica che c'erano due errori.

Qualcuno può aiutarmi?

+0

marcamillion, quando ne hai la possibilità, potresti commentare con le versioni esatte di ruby, rails, rspec e autotest con cui vedi questo problema? Cercherò di riprodurlo con l'ultima versione di ciascuno di questi, ma nel caso in cui mi piacerebbe conoscere le tue versioni. – carols10cents

risposta

1

Non ho trovato una correzione permanente che funziona ancora, ma a quanto pare si riduce a un problema di percorso - qualcosa sta mungendo il percorso di Windows e si rompe. Tuttavia, c'è un lavoro intorno:

All'interno del vostro descrivere, prima che il 'get' chiamare, mettere questo:

includono RSpec :: Rails :: ControllerExampleGroup

Ecco il codice di esempio utilizzando una specifica generata Rails per un controller. Si noti che è all'inizio del campo di applicazione:

require 'spec_helper' 

describe PagesController do 
    include RSpec::Rails::ControllerExampleGroup 

    describe "GET 'home'" do 
    it "should be successful" do 
     get 'home' 
     response.should be_success 
    end 
    end 

    describe "GET 'contact'" do 
    it "should be successful" do 
     get 'contact' 
     response.should be_success 
    end 
    end 

end 

C'è una correzione che ho visto che suggerisce una modifica spec_helper (nel caso Rails), ma non riuscivo a farlo funzionare.

EDIT: Un altro po 'di ricerca rivela che questo è un problema con autospec - questo lavoro funzionerà se si sta usando rspec, ma non funzionerà con l'autotest. Non sono stato in grado di trovare una soluzione per questo, comunque.

+0

Yeh ... Sto usando autotest :( – marcamillion

2

Ho fatto un po 'di ricerca su Google, e in base a this thread on the rspec ruby forum e this closed rspec-rails issue, questo è un problema con rspec-rails che è stato risolto.

Sto eseguendo Ruby 1.9.2p136 su Windows 7 utilizzando i binari 3.0.3.

Questo è quello che sembrava il mio Gemfile simili, che mostra le versioni di RSpec e RSpec-rail che stavo usando:

source 'http://rubygems.org' 

gem 'rails', '3.0.3' 
gem 'sqlite3-ruby', :require => 'sqlite3' 

group :development do 
    gem 'rspec-rails', '2.4.1' 
end 

group :test do 
    gem 'rspec', '2.4.0' 
    gem 'webrat', '0.7.1' 
end 

Dico "sembrava", perché quando ho provato a correre il generatore rotaie RSpec , questo è quello che ho ottenuto:

C:\Ruby\sample_app>rails generate rspec:install 
    create .rspec 
    create spec 
    create spec/spec_helper.rb 
Could not find "autotest" in any of your source paths. Your current source paths 
are: 
C:/Ruby/sample_app/lib/templates/rspec/install 
C:/Ruby/192-stackoverflow/lib/ruby/gems/1.9.1/gems/rspec-rails-2.3.0/lib/generators/rspec/install/templates 

allora ho aggiunto alla mia autotest Gemfile (e mi fascio installare di nuovo), poi ha cercato rotaie generano rspec: installare di nuovo e ha funzionato senza errori. Ecco come appare ora il mio Gemfile:

E la versione di autotest installata è 4.4.6:

C:\Ruby\sample_app>bundle show autotest 
C:/Ruby/192-stackoverflow/lib/ruby/gems/1.9.1/gems/autotest-4.4.6 

Poi ho creato il controller come indicato nel tutorial:

$ rails generate controller Pages home contact 

E sono stato in grado di eseguire sia "autotest exec fascio" e "spec RSpec /" senza ottenere l'errore che stanno vedendo:

C:\Ruby\sample_app>bundle exec autotest 
loading autotest/rspec2 
bundle exec C:\Ruby\192-stackoverflow\bin\ruby -S C:/Ruby/192-stackoverflow/lib/ruby/gems/1.9.1/gems/rspec-core-2.4.0/bin/rspec --tty 'C:/Ruby/sample_app/spec/controllers/pages_controller_spec.rb' 
.. 

Finished in 23.04 seconds 
2 examples, 0 failures 
# I killed autotest with CTRL-c at this point 
Interrupt a second time to quit 
Terminate batch job (Y/N)? y 
Terminate batch job (Y/N)? y 


C:\Ruby\sample_app>rspec spec/ 
.. 

Finished in 23.11 seconds 
2 examples, 0 failures 

ho anche continuato avanti con il tutorial, scrivendo le specifiche per la pagina Chi, mentre autotest era in esecuzione ed è stato in esecuzione sul mio cambiamenti senza alcun problema.

Quindi riprova:

  1. Aggiornamento Gemspec a guardare simile al mio secondo uno postato qui
  2. Esecuzione 'bundle install'
  3. Esecuzione 'autotest exec fascio'

e fammi sapere se funziona. Tornerò a controllare!

1

ho pensato che questo potrebbe aiutare coloro che potrebbero avere problemi ora che tutte le gemme sono state aggiornate un bel po '(soprattutto per coloro che utilizzano Ruby on Rails 3 tutorial):

ero in grado di ottenere questo lavoro utilizzando le ultime versioni di tutte le gemme:

mio Gemfile:

source 'https://rubygems.org' 

gem 'rails', '3.2.6' 
gem 'jquery-rails' 

gem 'sqlite3', :group => [:development, :test] 
gem 'pg', :group => :production #This is so Heroku will work 

group :development do 
    gem 'rspec-rails' 
end 

group :test do 
    gem 'rspec' 
    gem 'webrat' 
    gem 'spork-rails' #Use this is only if you want to use spork 
end 

assicuratevi di pulire fino rspec se hai già una versione precedente (utilizzando il Ruby on Rails 3 tutorial, per esempio) : https://stackoverflow.com/a/4433217/911133

Per utilizzare autotest seguire le istruzioni qui: https://github.com/svoop/autotest-growl

Si noti che l'installazione di ringhio-per-Windows fa parte di quell'affare e ringhio è non necessaria: http://www.growlforwindows.com/

Il file può essere .autotest in uno dei due posti

1) la tua home directory, che è (esempio):

C:\users\joeblow\.autotest 

2) la radice dell'applicazione rotaie (questo funzionerà quindi solo per quel app)

mio file .autotest assomiglia a questo:

require 'autotest/growl' 
require 'autotest/restart' 
require 'autotest/timestamp' 

Autotest.add_hook :initialize do |autotest| 
    autotest.add_mapping(%r%^spec/(requrests)/.*rb$%) do 
|filename, _| 
filename 
end 
end 

Autotest::Growl::clear_terminal = false 

Assicurati di aver fatto un 'bundle install'

Poi gestita Growl per Windows (menu di avvio o Start all'avvio di Windows) autotest

corsa nella riga di comando e si dovrebbe essere pronti per partire!

c:\users\joeblow\workspace\Rails\MyRailsProject> autotest 
Problemi correlati