[rspec-users] spec_server errors when reloading fixture replacement pl

Ben Mabey ben at benmabey.com
Tue May 26 15:06:40 EDT 2009


Scott Taylor wrote:
>
> On May 26, 2009, at 2:31 PM, Ben Mabey wrote:
>
>> Scott Taylor wrote:
>>>
>>> On May 26, 2009, at 1:22 PM, Mark Wilden wrote:
>>>
>>>> On Sun, May 24, 2009 at 10:17 PM, Ben Mabey <ben at benmabey.com 
>>>> <mailto:ben at benmabey.com>> wrote:
>>>>
>>>>
>>>>    Well, so Spork was really created with testing in mind.  It is
>>>>    more general purpose than spec_server though.  You can use it
>>>>    with any Ruby project, not just Rails.  You can also potentially
>>>>    use it with any other testing framework that adds support for it
>>>>    (I've been meaning to do this for Cucumber).  I know that Tim's
>>>>    original work with Kernel.fork was actually dealing with Mongrel
>>>>    but I'm not sure what the exact details of it are.  I'll try to
>>>>    find out for you though.
>>>>
>>>>
>>>> Spork seems to have the same problem that I have with spec_server: 
>>>> it doesn't reload classes I change. So if I'm doing TDD between a 
>>>> model and its spec, it doesn't help.
>>>
>>> I noticed the same thing.  It must be a bug in spork, correct?
>>>
>>> Scott
>>
>> What does your spec_helper look like?
>>
>> It should be something like:
>>
>> require 'rubygems'
>> require 'spork'
>>
>> Spork.prefork do
>> ENV["RAILS_ENV"] = "test"
>> require File.expand_path(File.dirname(__FILE__) + 
>> "/../config/environment")
>> # Load other stuff that only needs to be setup once and never 
>> reloaded (i.e. rspec and configuring it)
>> end
>>
>> Spork.each_run do
>> ActiveRecord::Base.establish_connection # make sure that the db 
>> connection is ready.
>> require File.expand_path(RAILS_ROOT + "/spec/fixjour_builders.rb") # 
>> You could use FixtureReplacement, FactorGirl, etc...
>> Spec::Runner.configure do |config|
>>   config.include Fixjour
>>   include SharedSpecHelpers
>>   include DatabaseHelpers
>>   include AuthenticatedTestHelper
>> end
>> end
>>
>>
>>
>> Keep in mind that the code in Spork.prefork must not require any of 
>> your models inadvertently.  If your environment file does this or a 
>> plugin does then your models will not be reloaded.  Look over your 
>> spec_helper file and try to see who is requiring your models 
>> initially. We have really only tested this on is our apps where Tim 
>> and I work... So, there could very well be bugs we need to iron out.
>
> Sweet!  Seems to be working great now.
>
> Looks like the README has changed over the weekend - previously, I had 
> been starting the spec server with script/spec_server.  Running spork 
> directly seems to work just fine.
>
> Thanks a TON!
>
> Scott
>


Ok cool.  Seems like the bug may of been poor documentation... please 
send a pull request if you think it can be improved.  :)

-Ben


More information about the rspec-users mailing list