Cetriolo e WebRat in Selenio modalità:Non è possibile avviare mongrel_rails quando si utilizza gemma bundle
Domanda
Sto usando gemma bundler (v. 0.9.6) e Guide 2.3.5, rubygems 1.3.6 e ruby 1.8.7 (Su Snow Leopard).Il mio Gemfile assomiglia a questo:
source :rubyforge
source "http://gems.github.com"
gem "rails", "2.3.5"
gem "ruby-debug"
gem "activemerchant", :require => 'active_merchant'
gem "hpricot"
gem "nokogiri"
gem "state_machine"
gem "fastercsv"
gem "yubikey"
gem "httparty"
gem "ruby-openid"
gem "mongrel"
group :development do
gem 'mongrel'
end
#teste
group :test do
gem 'rspec'
gem 'rspec-rails'
gem 'cucumber'
gem 'cucumber-rails'
gem "mechanize"
gem 'notahat-machinist', :require => 'machinist'
gem 'faker'
gem 'webrat'
gem 'selenium-client'
gem 'database_cleaner'
gem 'fakeweb'
gem 'mongrel' #Selenium needs this
end
Finora tutto bene.Sto usando bundler con successo per un paio di settimane già.Tuttavia, ho iniziato a usare il Cetriolo e WebRat in Selenio modalità per testare alcuni ajaxy caratteristiche del sito, e ogni volta che sono stato in esecuzione la funzione, WebRat mi diceva che le Guide server è stato avviato, ma ho sempre avuto un XHR_ERROR, dove il Selenio non riusciva a trovare l'URL. Beh, è successo che il server non è stato avviato.
Allora, ho aperto il webrat/lib/webrat/selenio/application_servers/rails.rb file e mettere un debugger istruzione nel metodo start.Correva la funzione di nuovo, quando il debugger attivato, ho stampato il ritorno del start_command def, che era:
mongrel_rails start -d --chdir='/Users/fullofcaffeine/Projetos/myproject' --port=3001 --environment=test --pid /Users/fullofcaffeine/Projetos/myproject/tmp/pids/mongrel_selenium.pid
Ho copiato e incollato nella console, rimossi i -s e & dalla fine, e qui è il risultato che ho ottenuto:
** Rails loaded.
** Loading any Rails specific GemPlugins
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:156:in `require': no such file to load -- /Users/fullofcaffeine/.bundle/ruby/1.8/gems/mongrel-1.1.5/lib/mongrel/init.rb (MissingSourceFile)
from /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:156:in `require'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:521:in `new_constants_in'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:156:in `require'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/gem_plugin-0.2.3/lib/gem_plugin.rb:134:in `load'
from /Library/Ruby/Site/1.8/rubygems/source_index.rb:241:in `each'
from /Library/Ruby/Site/1.8/rubygems/source_index.rb:241:in `each'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/gem_plugin-0.2.3/lib/gem_plugin.rb:112:in `load'
from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:231:in `load_plugins'
from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:117:in `cloaker_'
from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:149:in `call'
from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:149:in `listener'
from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:99:in `cloaker_'
from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:50:in `call'
from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:50:in `initialize'
from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:84:in `new'
from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:84:in `run'
from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/command.rb:212:in `run'
from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:281
from /usr/bin/mongrel_rails:19:in `load'
from /usr/bin/mongrel_rails:19
Controllare il percorso che si sta tentando di caricare cagnaccio da:"~/.bundle/...", ma il bastardo è installato come sistema di gemma.Bundle gestisce il caricamento del sistema di gemme multa per in un altro contesto, ma in questo particolare caso, non ho idea del perché non riesce :(.
Ho provato a lanciare "bundle install" di nuovo, e mi dice sempre:
L'installazione di meticci (1.1.5) dal sistema gemme
Ho provato a disinstallare bastardo dal sistema provare a fare il pacchetto per installare su ~/.bundle (questa sembra l'origine dell'errore, dal momento che bastardo è cercato in questo percorso mi avvio mongrel_rails come sopra), ma io non riuscivo a farlo.
gem uninstall mongrel
ERROR: While executing gem ... (Gem::InstallError)
cannot uninstall, check `gem list -d mongrel`
E quando ho eseguito il "gioiello list | grep bastardo", ottengo:
mongrel (1.1.5)
Strano.
Voglio solo essere in grado di eseguire il Cetriolo e WebRat + Selenio correttamente durante l'utilizzo di gemma bundler, ma questo mi sta facendo dadi.
Qualcuno potrebbe illuminarmi ?
Soluzione
Bene, ho trovato una soluzione alternativa, tipo di pesce, ma funziona:
cp /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/ mongrel-1.1.5
Ora, se si tenta di:
mongrel_rails start --chdir='/Users/fullofcaffeine/Projetos/myproject' --port=3001 --environment=test --pid /Users/fullofcaffeine/Projetos/myproject/tmp/pids/mongrel_selenium.pid
Trova meticcio e avviare il server, quindi è possibile eseguire il Cetriolo funzione che utilizza il Selenio e funziona :)
Se qualcuno trova o sa nulla a proposito di questo problema, si prega di condividere, questo potrebbe essere un bug da qualche parte.
Altri suggerimenti
Ho avuto un problema simile, ma si è rivelato essere non corrispondenti versioni di gemme tra ciò che era in mio /Users/{account}/.gemme/ e ciò che è stato installato in /Library/Ruby/Gemme/ (installazione di default) o in /opt/local/lib/ruby/gemme/ (Mac Porte installare).Appena ho eliminato il /Users/{account}/.gemme/ tutto ha funzionato.
Ho riscontrato questo stesso problema, e ha trascorso un po ' cercando di eseguire il debug.Sembra che ci sia una sorta di interazione tra Meticci, GemPlugin e Insaccatrice.Possibili soluzioni sono:
- Fix GemPlugin per giocare bene con Bundler 0.9.
- Modificare Cagnaccio di non utilizzare più il GemPlugin.
- Modificare Webrat per il supporto di un web server diverso da Bastardo.
Dal momento che entrambi GemPlugin e Meticci sono alla ricerca di un po ' obsoleto e abbandonato in questi giorni, ho deciso di aggiungere un Sottile supporto per Webrat base questa patch.
È possibile trovare la nuova patch su github, o aggiungere quanto segue al file Gemfile:
gem 'webrat', :git => 'git://github.com/emk/webrat.git'
...e aggiornare le vostre caratteristiche/supporto/env.rb file di conseguenza:
Webrat.configure do |config|
# Add this line.
config.application_framework = :rails_thin
# Your previous configuration here...
end
bundle exec mongrel_rails start ...
?
Il punto qui è quello di caricare le guide gemme dal bundle e non dal sistema gemenv.
Abbiamo un simile scenario che è stato scritto qui:Come arrivare cagnaccio di lavoro con bundler?
Provare a individuare le gemme directory corrente gemma eseguibile e eliminare eventuali residui dalla cache o specifiche cartelle, che dovrebbe funzionare.