2010-11-30 10 views
0

J'essaie d'utiliser autotest pour le développement de Rails. Il est supposé exécuter mes tests automatiquement.Pourquoi l'autotest ne fonctionne-t-il pas?

Voici ma configuration:

$ which ruby 
/usr/bin/ruby 

$ ruby -v 
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] 

$ rails -v 
Rails 2.3.9 

autotest-rails (4.1.0) 
ZenTest (4.4.0) 

$ echo $PATH 
/opt/local/bin:/opt/local/sbin:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/mysql/bin:/Users/ethan/bin:/opt/local/bin:/usr/local/pgsql/bin:/usr/local/git/bin:/usr/local/oracle/instantclient_10_2 

est ici l'environnement gemme:

RubyGems Environment: 
    - RUBYGEMS VERSION: 1.3.7 
    - RUBY VERSION: 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] 
    - INSTALLATION DIRECTORY: /Library/Ruby/Gems/1.8 
    - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby 
    - EXECUTABLE DIRECTORY: /usr/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - universal-darwin-10 
    - GEM PATHS: 
    - /Library/Ruby/Gems/1.8 
    - /Users/ethan/.gem/ruby/1.8 
    - /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :benchmark => false 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - :sources => ["http://gemcutter.org"] 
    - REMOTE SOURCES: 
    - http://gemcutter.org 

est ici l'erreur. Il semble que autotest essaie d'utiliser une autre version de Ruby.

$ autotest 
loading autotest/rails 
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -I.:lib:test -rubygems -e "%w[test/unit test/functional/procurements_controller_test.rb].each { |f| require f }" | unit_diff -u 
sh: /usr/local/bin/unit_diff: /usr/local/bin/ruby: bad interpreter: No such file or directory 
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/test/unit/ui/console/testrunner.rb:108:in `flush': Broken pipe (Errno::EPIPE) 
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/test/unit/ui/console/testrunner.rb:108:in `output' 
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/test/unit/ui/console/testrunner.rb:51:in `setup_mediator' 
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/test/unit/ui/console/testrunner.rb:39:in `start' 
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/test/unit/ui/testrunnerutilities.rb:29:in `run' 
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/test/unit/autorunner.rb:216:in `run' 
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/test/unit/autorunner.rb:12:in `run' 
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/test/unit.rb:278 
    from -e:1 
+0

Postez votre PATH $ s'il vous plaît? Et tous les scripts impliqués. –

+0

OK, CHEMIN. Voila. – Ethan

+0

S'il vous plaît ajouter la sortie de 'gem env' aussi. Nous devons voir ce que Gems pense de son environnement. –

Répondre

1

La prise en charge de Rails semble hors du noyau ZenTest. Installez autotest-rails ou passez à ZenTest 4.0.0 pour le faire fonctionner à nouveau.

+0

Est-ce un problème connu? –

+0

C'est une caractéristique connue. En premier lieu, j'ai d'ailleurs soumis une réponse partielle. La réponse est maintenant aussi complète que mes connaissances le permettent. – lbz

+0

Merci pour la réponse. J'ai fait installer des rails autotest (jetez un oeil à l'article original). Cependant, j'ai essayé de revenir à ZenTest 4.0.0. Encore obtenir la même erreur. – Ethan

2

Je vois deux choses:

Votre which ruby dit la valeur par défaut est /usr/bin/ruby, mais votre Autotest appelle /usr/local/bin/ruby.

sh:/usr/local/bin/unit_diff:/usr/local/bin/ruby: mauvais interprète: Aucun fichier ou répertoire

En outre, votre chemin n'est pas bien organisé parce que vous avoir des entrées dupliquées. Je partage sur « : » puis trié à rechercher des doublons:

/bin 
/Library/Frameworks/Python.framework/Versions/Current/bin 
/opt/local/bin # <-- 
/opt/local/bin # <-- 
/opt/local/sbin 
/sbin 
/Users/ethan/bin 
/usr/bin 
/usr/local/bin # <-- 
/usr/local/bin # <-- 
/usr/local/git/bin 
/usr/local/mysql/bin 
/usr/local/oracle/instantclient_10_2 
/usr/local/pgsql/bin 
/usr/sbin 

Notez que vous avez dupliqué /opt/local/bin et /usr/local/bin répertoires. Ceux-ci doivent apparaître avant le répertoire par défaut /usr/bin pour que vos applications "personnellement" installées soient localisées en premier, donc vous devriez faire un peu de ménage. Une fois que vous avez fait cela, fermez votre (vos) session (s) de terminal. Ouvrez une nouvelle session et essayez de relancer votre test pour voir si quelque chose a changé/amélioré.

L'organisation du chemin fait partie du problème et explique pourquoi which ruby pointe vers le système Ruby. Je suppose qu'une autre partie de ce puzzle est que vous utilisez #!/usr/local/bin/ruby comme "barre oblique" dans vos scripts, ou que vous pointez explicitement sur ce Ruby lorsque vous appelez des objets sur la ligne de commande. Cela va confondre les tests sans fin. Dans mes scripts, je l'utiliser pour appeler Ruby:

#!/usr/bin/env ruby 

qui fonctionne bien parce qu'il utilise ce que Ruby se définit d'abord dans mon chemin, et la partie suivante ...

Je suis un grand partisan pour utiliser RVM pour gérer les installations Ruby sur Mac OS et Linux. Il fait en sorte que vous n'avez pas à installer quoi que ce soit dans votre /usr/bin ruby ​​par défaut ou même la peine d'en ajouter un en /usr/local/bin. RVM met tout dans ~/.rvm et le rend vraiment facile à installer/gérer/supprimer les versions de Ruby avec leurs gemmes associées, ou même tout balayer en supprimant ce répertoire. Installing RVM et Gemsets sont de bons endroits de départ si vous voulez faire un essai.

+0

Merci pour l'aide, Greg. J'ai nettoyé mon chemin. J'ai ajouté la sortie de l'environnement gem. J'ai essayé à nouveau l'autotest. Maintenant, je reçois "Autotest style autotest/rails ne semble pas exister. Je ne sais pas si c'est mieux ou pire. – Ethan

+0

BTW, RVM sonne bien. Peut-être que je vais essayer. – Ethan

0

je devais faire ce qui suit pour obtenir mon travail de test automatique après avoir obtenu l'erreur suivante avec Ruby ree-1.8.7 + rbenv: « rbenv: Autotest: command not found », même si ledit bijou a été installé Autotest. Le binaire dans /usr/local/rbenv/versions/ree-1.8.7-2012.02/bin/autotest manquait cependant, même après des réinstallations répétées de l'autotest.

#> gem uninstall ZenTest #all versions 
#> gem uninstall autotest autotest-fsevent autotest-growl autotest-rails 
#> bundle install 

Mon Gemfile:

group :test,:development do 
    gem 'factory_girl_rails', '1.0' 
    gem 'mocha','~> 0.12.1', :require => false #for mocking data 
    gem 'ZenTest', '4.8.2' #DON'T USE 4.8.3 with Rails 3.2! 
    gem 'autotest', '~> 4.4.6' 
    gem 'autotest-fsevent','~> 0.2.8' 
    gem 'autotest-rails', '~> 4.1.2' 
    gem 'autotest-growl', '~> 0.2.16' 
end 
Questions connexes