2010-09-01 4 views
6

J'ai mis à jour mon application en utilisant config.gem vers un Gemfile avec bundler et j'ai remarqué que mes tests unitaires ont maintenant cessé de fonctionner. C'est un peu étrange et je ne suis pas tout à fait sûr de savoir par où commencer.rake ne pas exécuter les tests unitaires

Lorsque je lance rake test:units --trace je peux voir mon environnement en cours d'installation et il répertorie les fichiers qu'il a l'intention d'exécuter, mais il ne fait que retourner.

Il fait la même chose si j'essaie d'exécuter un fichier individuel en utilisant quelque chose comme: rake -I"lib:test" test/unit/foo.rb ou en utilisant autotest.

Tout est très étrange. C'est comme si les fichiers étaient chargés mais les tests unitaires réels ne sont pas exécutés.

J'utilise shoulda et fast_context et je pensais que ce pourrait être le problème, mais si j'inclus un test unitaire en utilisant la syntaxe standard def test_ il ne comprend toujours courir, donc je ne pense pas que ce pas est ceux-ci.

Tous les conseils ou indications seraient grandement appréciés. J'ai l'impression de coder aveugle jusqu'à ce que je puisse les faire fonctionner à nouveau!


Alors, voici où je suis maintenant:

Mes raisons d'utiliser Bundler sont pour l'installation de dépendances sur Heroku et parce que je voulais utiliser une pierre précieuse source d'un git sur GitHub. Le long et le court de cela est que j'ai enlevé le preinitializer pour bundler et suis retourné à l'aide de config.gem. Pour contourner le fait que je ne peux pas utiliser un repo github en utilisant config.gem j'ai poussé ma propre copie à rubygems. Était-ce le bon mouvement?


Voici le preinitializer.rb

begin 
    require "rubygems" 
    require "bundler" 
rescue LoadError 
    raise "Could not load the bundler gem. Install it with `gem install bundler`." 
end 

if Gem::Version.new(Bundler::VERSION) <= Gem::Version.new("0.9.24") 
    raise RuntimeError, "Your bundler version is too old for Rails 2.3." + 
    "Run `gem install bundler` to upgrade." 
end 

begin 
    # Set up load paths for all bundled gems 
    ENV["BUNDLE_GEMFILE"] = File.expand_path("../../Gemfile", __FILE__) 
    Bundler.setup 
rescue Bundler::GemNotFound 
    raise RuntimeError, "Bundler couldn't find some gems." + 
    "Did you run `bundle install`?" 
end 

Je ne sais pas comment le fichier .gems serait utile, car il est une chose que Heroku et je devrais chasser par git pour elle, mais voici mon gemfile.

source :gemcutter 

gem 'rails', '2.3.9' 
gem 'pg' 
gem 'minitest' 
gem 'RedCloth' 
gem 'erubis' 
#gem 'memcached' 
gem 'daemons' 
gem 'resque' 

gem 'inherited_resources', '1.0.6' 
gem 'clearance', '0.8.8' 
gem 'acl9' 
gem 'sprockets' 

gem 'aws-s3' 
gem 'paperclip', '2.3.1.1' 
gem 'rmagick', '2.12.2' 

gem 'jonnii-cheddargetter', '0.1.3' 

gem 'attribute_normalizer' 

gem 'formtastic', '1.1.0.beta' 
gem 'will_paginate', '2.3.14' 

gem 'hoptoad_notifier' 
gem 'mixpanel_client' 

gem 'sunspot' 
gem 'websolr-sunspot_rails' 

gem 'geokit' 
gem 'ri_cal' 

gem 'jonnii-yelp' 

group :development, :test do 
    gem 'test-spec' 
    gem 'shoulda' 

    gem 'redgreen' 
    gem 'factory_girl' 
    gem 'populator' 
    gem 'faker' 

    gem 'ZenTest' 
    gem 'autotest-rails' 

    gem 'webrat' 
    gem 'cucumber' 
    gem 'cucumber-rails' 
    gem 'database_cleaner' 
    gem 'parallel' 
    gem 'hydra' 
    gem 'heroku' 
    gem 'taps' 
    gem 'ruby-prof' 
    gem 'treetop' 
    gem 'rspec' 
    gem 'rspec-rails' 
end 
+0

voulez-vous afficher les lignes de preinitializer et le Gemfile (et ancien fichier .gems) – marshally

+0

probablement pas bonne idée de pousser des versions séparées/personnelles sur rubygems ... cela tend à conduire à des versions anciennes et inutilisées de gemmes que personne ne conserve ou n'utilise. il suffit de les télécharger localement ou les installer sur votre système plutôt que de dépendre de l'hébergement de gemme. Juste mes pensées – Lukas

+0

Hey, j'ai remarqué que vous utilisez inherited_resources et rails 2.3 avec bundler.J'ai de la difficulté à les faire travailler ensemble. Avez-vous déjà rencontré des problèmes avec cela? – taelor

Répondre

1

obtenu le même problem.Just retirer le bijou « hydre » va faire le test unitaire retour à la normale

0

Avez-vous cela à la fin de votre fichier config/boot.rb:

class Rails::Boot 
    def run 
    load_initializer 

    Rails::Initializer.class_eval do 
     def load_gems 
     @bundler_loaded ||= Bundler.require :default, Rails.env 
     end 
    end 

    Rails::Initializer.run(:set_load_path) 
    end 
end 

(de http://gembundler.com/rails23.html)

+0

meilleure option? mise à niveau vers les rails 3 ... :) – Lukas

0

J'ai eu récemment des problèmes spécifications en cours d'exécution pour un projet. La raison en était qu'il me manquait une ligne de config/application.rb. De nos jours, cette ligne apparaît par défaut lorsque vous créez un nouveau projet rails 3, mais si votre projet a été initialisé il y a quelque temps, il est peut-être manquant.

# If you have a Gemfile, require the gems listed there, including any gems 
# you've limited to :test, :development, or :production. 
Bundler.require(:default, Rails.env) if defined?(Bundler)