Spork с Mongoid, Factory Girl и RSpec не обновляет модели - PullRequest
0 голосов
/ 13 января 2012

Я пытаюсь настроить Spork для работы с RSpec и Mongoid. Модели не перезагружаются каждый раз. Я нашел описание, предлагающее следующие настройки spec_helper для перезагрузки mongoid, но теперь заводская девушка несчастна. Возвращается:

uninitialized constant Rails::VERSION (NameError)
/home/dev1173/.rvm/gems/ruby-1.9.2-p290@version-two/gems/factory_girl-2.3.2/lib/factory_girl.rb:23:in '<top (required)>'

Вот содержимое spec/spec_helper.rb

require 'rubygems'
require 'spork'

Spork.prefork do
  ENV["RAILS_ENV"] ||= 'test'
  require "rails/mongoid"
  Spork.trap_class_method(Rails::Mongoid, :load_models)

  require 'factory_girl_rails'
  Spork.trap_class_method(Factory, :find_definitions)

  require 'rspec/rails'
  require 'capybara/rspec'
  require 'capybara/rails'
  require "email_spec"
  require File.expand_path(File.dirname(__FILE__) + '/../config/environment')

  Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}

  RSpec.configure do |config|

    config.infer_base_class_for_anonymous_controllers = false  

    # Allows email magic
    config.include(EmailSpec::Helpers)
    config.include(EmailSpec::Matchers)

    require 'database_cleaner'
    config.before(:suite) do
      DatabaseCleaner.strategy = :truncation
      DatabaseCleaner.orm = "mongoid"
    end

    config.before(:each) do
      DatabaseCleaner.clean
    end

  end
end

Spork.each_run do
end

Я уже давно бьюсь об этом. Есть идеи?

1 Ответ

3 голосов
/ 14 января 2012

Вы должны установить cache_classes = false в вашем config / environment / test.rb и удалить следующие строки

require 'factory_girl_rails'
Spork.trap_class_method(Factory, :find_definitions)

Или, если вы хотите сохранить истинные значения cache_classes, следуйте моему руководству:

Использование spork и rails 3.1 с cache_classes true

...