6

アプリを使用config.gemからGemfileバンドラーを使用するようにアップグレードしましたが、単体テストの実行が停止していることに気付きました。ちょっと奇妙で、どこから調べればよいのかよくわかりません。

実行するrake test:units --traceと、環境がセットアップされていることがわかり、実行する予定のファイルがリストされますが、戻ってきます。

のようなものを使用して 1 つの個別のファイルを実行しようとすると、同じことが行われrake -I"lib:test" test/unit/foo.rbますautotest

それはすべて非常に奇妙です。ファイルが読み込まれているように見えますが、実際の単体テストは実行されていません。

私はshouldaandを使用しfast_contextていますが、これらが問題である可能性があると思いましたが、標準構文を使用した単体テストを含めると、def test_まだ実行されないため、それらではないと思います。

ヒントや指針をいただければ幸いです。それらが再び機能するようになるまで、盲目的にコーディングしているように感じます!


だからここに私は今いる:

バンドラーを使用する理由は、heroku に依存関係をインストールするためと、github の git リポジトリから入手した gem を使用したかったからです。preinitializer要するに、 for bundler を削除し、を使用するように戻したということconfig.gemです。を使用して github リポジトリを使用できないという事実を回避するためにconfig.gem、自分のコピーを ruby​​gems にプッシュしました。これは正しい動きでしたか?


ここに 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

.gems ファイルがどのように役立つかはわかりません。なぜなら、それは heroku のみのものであり、git を介して検索する必要があるためですが、ここに私の 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
4

3 に答える 3

1

同じ問題が発生しました。gem 'hydra' を削除するだけで、単体テストが正常に戻ります

于 2010-12-02T13:29:58.723 に答える
0

最近、プロジェクトの仕様を実行する際に問題が発生しました。その理由は、config/application.rb から 1 行抜けていたからです。現在、新しい 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)
于 2010-10-27T10:54:06.153 に答える
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より)

于 2010-10-19T14:36:39.870 に答える