我已将我的应用从使用config.gem
升级为带有捆绑器的Gemfile
,并且已注意到我的单元测试现已停止运行。这有点奇怪,我不确定从哪里开始寻找。
当我运行rake test:units --trace
时,我可以看到我的环境正在设置,它列出了它打算执行的文件,但它只是返回。
如果我尝试使用以下内容运行一个单独的文件,我会做同样的事情:rake -I"lib:test" test/unit/foo.rb
或使用autotest
。
这一切都很奇怪。好像文件正在加载但实际的单元测试没有运行。
我正在使用shoulda
和fast_context
,我认为这可能是问题但如果我使用标准def test_
语法包含单元测试,它仍然无法运行我认为不是那些。
任何提示或指示都将不胜感激。我觉得自己编码失明,直到我能让他们再次工作!
所以我现在就在这里:
我使用bundler的原因是为了在heroku上安装依赖项,因为我想在github上使用源自git repo的gem。它的长短是因为我已经删除了preinitializer
for bundler并且已经回到使用config.gem
。为了解决我无法使用config.gem
使用github存储库的事实,我已将自己的副本推送到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
我不知道.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
答案 0 :(得分:1)
遇到了同样的问题。只需移除宝石'hydra'即可让单元测试恢复正常
答案 1 :(得分: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
答案 2 :(得分: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)