[rspec-users] rspec (steak) turning off transactional fixtures

Marcelo de Moraes Serpa celoserpa at gmail.com
Wed Jun 16 15:03:15 EDT 2010


Oh, the code in the before/after blocks is wrapped in a if options[:js].
Forgot to write it.

On Wed, Jun 16, 2010 at 2:02 PM, Marcelo de Moraes Serpa <
celoserpa at gmail.com> wrote:

> Yes,
>
> That's what I want to do, but my code is a little bit different. I'm
> calling config.use_transactional_fixtures inside the block:
>
> config.before(:each) do
>
>   config.use_transactional_fixtures = false
> end
>
> And then enabling it again after:
>
> config.after(:each) do
>   DatabaseCleaner.clean #truncation mode doesn't require the start method
> to be called, so clean is enough.
>
>   config.use_transactional_fixtures = true
> end
>
> Why? Well, not all example use js (culerity), and for those, I wouldn't
> want to use DatabaseCleaner.
>
> However, it doesn't seem to work. If I create an object from the ruby
> instance running the specs, and put a breakpoint, I can't see the data
> outside of it :(
>
> Any ideas?
>
> Marcelo.
>
>
> On Wed, Jun 16, 2010 at 1:47 PM, David Chelimsky <dchelimsky at gmail.com>wrote:
>
>> On Jun 16, 2010, at 1:37 PM, Marcelo de Moraes Serpa wrote:
>>
>> Hi David,
>>
>> Yeah, I'm using DatabaseCleaner, pretty much familiar with it.
>>
>> The issue is that passing it to rspec's yielded config object didn't seem
>> to disable transactional_fixtures:
>>
>> Spec::Runner.configure do |config|
>>>
>>>   config.before(:each) do
>>>     if options[:js] #using culerity
>>>       Capybara.current_driver = :culerity
>>>       config.use_transactional_
>>> fixtures = false
>>>     end
>>>   end
>>>
>>>   config.after(:each) do
>>>     if  options[:js]
>>>       DatabaseCleaner.clean
>>>       Capybara.use_default_driver
>>>       config.use_transactional_fixtures = true
>>>     end
>>>   end
>>>
>>> end
>>>
>>
>> Check the lines "config.use_transactional_fixtures" on both callbacks. I
>> doesn't seem to disable them. Any ideas?
>>
>>
>> Not sure why that doesn't work, but that's not what I was proposing. I'm
>> saying use database cleaner _instead_ of config.use_transactional_fixtures:
>>
>> Spec::Runner.configure do |c|
>>   c.use_transactional_fixtures = false
>>   c.before do
>>     if options[:js]
>>       DatabaseCleaner.strategy = :truncation
>>     else
>>       DatabaseCleaner.strategy = :transaction
>>     end
>>     DatabaseCleaner.start
>>   end
>>   c.after do
>>     DatabaseCleaner.clean
>>   end
>> end
>>
>> Make sense?
>>
>>
>> Marcelo.
>>
>>
>> On Tue, Jun 15, 2010 at 5:32 PM, David Chelimsky <dchelimsky at gmail.com>wrote:
>>
>>> On Jun 15, 2010, at 5:15 PM, Marcelo de Moraes Serpa wrote:
>>>
>>> > Hey all,
>>> >
>>> > I have replaced Cucumber with Steak and I like the experience so far.
>>> It is not as polished as Cucumber in what comes to configuration, but it is
>>> simpler and covers my needs perfectly. I've followed the trick to pass a
>>> hash to the example in order to setup Capybara to use a different driver,
>>> like so:
>>> >
>>> > spec/acceptance/support/javascript.rb
>>> >
>>> > Spec::Runner.configure do |config|
>>> >
>>> >   config.before(:each) do
>>> >     if options[:js] #using culerity
>>> >       Capybara.current_driver = :culerity
>>> >       config.use_transactional_fixtures = false
>>> >     end
>>> >   end
>>> >
>>> >   config.after(:each) do
>>> >     if  options[:js]
>>> >       DatabaseCleaner.clean
>>> >       Capybara.use_default_driver
>>> >       config.use_transactional_fixtures = true
>>> >     end
>>> >   end
>>> >
>>> > end
>>> >
>>> > As you can see, if an example has an option with :js => true, it will
>>> use culerity, and this works fine. What doesn't seem to work is the
>>> use_transactional_fixtures = false conf. I still can't access the data
>>> outside of the ruby instance (i.e: the app server celerity is accessing
>>> doesn't have access to the fixture data). With Cucumber it would be a matter
>>> of setting up Cucumber::Rails::World.use_transactional_fixtures to false.
>>> >
>>> > How could I disable transactional fixtures on a per example base when
>>> using rspec / steak?
>>>
>>> As far as I know, this is not easy, or maybe even possible, with the
>>> Rails built-in framework. What I'd do is turn off the rails features
>>> (config.use_transactional_fixtures = false) and use database_cleaner. Are
>>> you familiar w/ database_cleaner?
>>>
>>> David
>>> _______________________________________________
>>> rspec-users mailing list
>>> rspec-users at rubyforge.org
>>> http://rubyforge.org/mailman/listinfo/rspec-users
>>>
>>
>> _______________________________________________
>> rspec-users mailing list
>> rspec-users at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/rspec-users
>>
>>
>>
>> _______________________________________________
>> rspec-users mailing list
>> rspec-users at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/rspec-users
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20100616/e2c9c06e/attachment.html>


More information about the rspec-users mailing list