title: Spork and cache_classes problem with rspec, factory_girl and datamapper
body: <p>I've got a problem with Spork test server.</p>
  
  <p>If I set config.cache_classes = false in config/environments/test.rb then specs start to rasie errors. </p>
  
  <pre><code>Failure/Error: task = Factory(:something, :foo =&gt; @foo, :bar =&gt; @bar)
       DataMapper::ImmutableError:
         Immutable resource cannot be modified
  </code></pre>
  
  <p>This is my spec_helper.rb:</p>
  
  <pre><code>require 'spork'
  
  Spork.prefork do
    if ENV['CODE_COVERAGE'] == '1'
      require 'simplecov'
      SimpleCov.start 'rails'
    end
  
    ENV["RAILS_ENV"] ||= 'test'
    require File.expand_path("../../config/environment", __FILE__)
    require 'rspec/rails'
    require 'webmock/rspec'
    require 'factory_girl'
  
    Dir[Rails.root.join("spec/controllers/shared/*.rb")].each { |f| require f }
    Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
  
    RSpec.configure do |config|
      config.mock_with :mocha
      config.include Rails.application.routes.url_helpers
      config.include UrlHelper
  
      config.before(:each) do
        repository(:default) do
          transaction = DataMapper::Transaction.new(repository)
          transaction.begin
          repository.adapter.push_transaction(transaction)
        end
      end
  
      config.after(:each) do
        repository(:default).adapter.pop_transaction.try(:rollback)
      end
  
    end
  end
  
  # This code will be run each time you run your specs.
  Spork.each_run do
    # reload factories
    Factory.definition_file_paths = Dir[File.join(Rails.root, "spec", "factories")]
    Factory.find_definitions
  
    DatabaseCleaner.strategy = :truncation
    DatabaseCleaner.clean
    LoggedEvent.all.destroy!
  
  end
  </code></pre>
  
  <p>When I have config.cache_classes = true, then everything works well, but It not reload me a models, controllers classes, so I don't see a point in using spork in this case.</p>
  
  <p>I tried to add to spec_helper.rb something like this, when cache is true:</p>
  
  <pre><code>Spork.each_run do
      Dir.glob("#{Rails.root}/app/models/*.rb").sort.each { |file| load file }
  end
  </code></pre>
  
  <p>But I don't like this solution.</p>