2010-09-01 43 views
6

Tôi đã nâng cấp ứng dụng của mình từ việc sử dụng config.gem thành Gemfile với gói và đã nhận thấy rằng các thử nghiệm đơn vị của tôi hiện đã ngừng chạy. Đó là một chút lạ và tôi không hoàn toàn chắc chắn nơi để bắt đầu tìm kiếm.rake không chạy thử nghiệm đơn vị

Khi tôi chạy rake test:units --trace Tôi có thể thấy môi trường của mình đang được thiết lập và nó liệt kê các tệp mà dự định thực thi, nhưng sau đó nó chỉ trả lại.

Điều tương tự cũng xảy ra nếu tôi cố gắng chạy một tệp riêng lẻ bằng cách sử dụng một cái gì đó như: rake -I"lib:test" test/unit/foo.rb hoặc sử dụng autotest.

Tất cả đều rất lạ. Nó giống như các tập tin đang được nạp nhưng các bài kiểm tra đơn vị thực tế không được chạy.

Tôi đang sử dụng shouldafast_context và tôi nghĩ đây có thể là vấn đề, nhưng nếu tôi bao gồm kiểm tra đơn vị sử dụng cú pháp chuẩn def test_ thì vẫn không chạy được vì vậy tôi không nghĩ đó là những thứ đó.

Bất kỳ gợi ý hoặc con trỏ nào sẽ được đánh giá cao. Tôi cảm thấy như tôi đang mã hóa mù cho đến khi tôi có thể làm cho họ hoạt động trở lại!


Vì vậy, đây là nơi tôi bây giờ:

lý do tôi sử dụng bundler là để cài đặt phụ thuộc vào Heroku và vì tôi muốn sử dụng một viên ngọc có nguồn gốc từ một repo git trên github. Dài và ngắn của nó là tôi đã loại bỏ các preinitializer cho bundler và đã quay trở lại sử dụng config.gem. Để có được xung quanh thực tế là tôi không thể sử dụng một repo github sử dụng config.gem Tôi đã đẩy ra bản sao của riêng tôi để rubygems. Đây có phải là động thái đúng không?


Đây là 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 

Tôi không biết làm thế nào các tập tin .gems sẽ là hữu ích vì đó là một điều Heroku chỉ và tôi sẽ phải tìm thông qua git cho nó, nhưng đây là gemfile của tôi.

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

bạn sẽ gửi những dòng preinitializer và Gemfile (và .gems cũ tập tin) – marshally

+0

lẽ không phải là một ý tưởng tốt đẩy phiên bản riêng biệt/cá nhân ra trên rubygems ... điều này có xu hướng dẫn đến phiên bản cũ, chưa sử dụng của đá quý mà không ai duy trì hoặc sử dụng. chỉ cần tải chúng tại địa phương hoặc cài đặt chúng trên hệ thống của bạn hơn là tùy thuộc vào lưu trữ đá quý. chỉ là những suy nghĩ của tôi – Lukas

+0

Xin chào, tôi nhận thấy bạn đang sử dụng inherited_resources và đường ray 2.3 với trình chặn.Tôi gặp vấn đề khiến họ làm việc cùng nhau. Bạn đã bao giờ gặp phải bất kỳ vấn đề nào với điều đó chưa? – taelor

Trả lời

1

Got cùng problem.Just loại bỏ các viên ngọc 'hydra' sẽ nhận được bài kiểm tra đơn vị trở lại bình thường

0

Bạn có này ở phần cuối của tập tin cấu hình/boot.rb của bạn:

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 

(từ http://gembundler.com/rails23.html)

+0

tùy chọn tốt hơn? nâng cấp lên đường ray 3 ... :) – Lukas

0

tôi gần đây đã khó khăn khi chạy số kỹ thuật cho một dự án. Lý do là tôi đã thiếu một dòng từ config/application.rb. Ngày nay, dòng đó sẽ xuất hiện theo mặc định khi bạn tạo một dự án đường ray 3 mới, nhưng nếu dự án của bạn đã được khởi tạo một thời gian trước thì nó có thể bị thiếu.

# 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) 
Các vấn đề liên quan