2010-09-01 107 views
6

我已經使用config.gem將我的應用程序升級到帶有捆綁器的Gemfile,並且注意到我的單元測試已停止運行。這有點奇怪,我不完全確定從哪裏開始尋找。耙不運行單元測試

當我運行rake test:units --trace我可以看到我的環境正在設置,它列出了它打算執行的文件,但它只是返回。

如果我嘗試使用類似如下的方法運行一個單獨的文件,它會執行同樣的操作:rake -I"lib:test" test/unit/foo.rb或使用autotest

這一切都很奇怪。就好像文件正在加載,但實際的單元測試沒有運行。

我使用shouldafast_context,我想這可能是問題,但如果我包括使用標準def test_語法,但它仍然沒有得到執行這樣一個單元測試,我不認爲這是這些。

任何提示或指針將不勝感激。我覺得我編碼盲目,直到我能讓他們再次工作!


因此,這裏是我現在所在:

我的理由使用捆綁是安裝在Heroku上的依賴性和,因爲我想用從GitHub上一個git回購來源的瑰寶。其中最重要的一點是我已經刪除了捆綁軟件的preinitializer,並重新使用config.gem。爲了解決這個事實,我不能使用使用config.gem的github repo,我推出了自己的副本到rubygems。這是正確的舉措嗎?


這裏的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 

我不知道如何,因爲它是唯一的Heroku的事情,我不得不通過GIT中去尋找它的.gems文件將是有益的,但這是我的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

將您發佈preinitializer線和Gemfile中(老.gems文件) – marshally 2010-09-10 04:35:46

+0

可能不是一個好主意推動rubygems單獨/個人版本......這往往會導致舊的,未使用的寶石版本,沒有人維護或使用。只需將它們下載到本地或將它們安裝在您的系統上,而不是依賴於Gem託管。只是我的想法 – Lukas 2010-10-19 14:33:25

+0

嘿,在那裏,我注意到你正在使用bundler使用inherited_resources和rails 2.3。我在讓他們一起工作時遇到問題。你有沒有遇到過任何問題? – taelor 2011-10-10 17:57:28

回答

1

得到了相同的problem.Just取出寶石「九頭蛇」將獲得的單元測試恢復正常

0

你有這個在你的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 

(從http://gembundler.com/rails23.html

+0

更好的選擇?升級到rails 3 ... :) – Lukas 2010-10-19 14:37:14

0

我最近有運行規範的項目麻煩。原因是我錯過了config/application.rb中的一行。現在,當你創建一個新的rails 3項目時,該行默認彈出,但如果你的項目已經被初始化了,它可能會丟失。

# 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)