[LRUG] Handling opening and closing of transactions manually in ActiveRecord

Murray Steele murray.steele at gmail.com
Fri Oct 8 04:07:58 PDT 2010


Ecch.  Actually reading the linked-to article reveals what you're trying to
do.  My comment is pointless.  Ignore me.  I wasn't here.

On 8 October 2010 12:03, Murray Steele <murray.steele at gmail.com> wrote:

> I thought that RSpec (via rspec-rails) respected the
> use_transactional_fixtures (e.g. wrap all the specs in a transaction) stuff
> in ActiveSupport::TestCase?  Am I wrong?
>
>
> On 8 October 2010 11:40, Matthew Willson <matthew at playlouder.com> wrote:
>
>> Can't speak for datamapper, or for RSpec infact, but here's a little test
>> mixin we use with Sequel and test/spec in case a similar approach works.
>>
>> module TransactionalTestCase
>>  def run(*args, &block)
>>    database.transaction do
>>      super
>>      raise Sequel::Error::Rollback
>>    end
>>  end
>> end
>>
>> On 8 Oct 2010, at 11:32, Tim Cowlishaw wrote:
>>
>> > Hey all,
>> >
>> > I stumbled across Xavier Shay's article on setting up RSpec to use
>> > transactional before(:all) blocks with datamapper the other day
>> > (
>> http://rhnh.net/2010/10/06/transactional-before-all-with-rspec-and-datamapper
>> ),
>> > which is convenient as it's something I've been meaning to do for ages
>> > on one of our codebases that has a rather large test suite with lots
>> > of setup in before(:each) blocks. Therefore, I thought I'd spend a bit
>> > of time trying to get his solution working with ActiveRecord, rather
>> > than Datamapper. However, because ActiveRecord's transaction interface
>> > requires you to pass a block to the transaction method, containing the
>> > work to be done within the transaction, rather than offering
>> > transaction.begin and transaction.rollback methods a la datamapper,
>> > this is a little trickier than expected. There is
>> > ActiveRecord::Base.connection.begin_db_transaction, and
>> > ActiveRecord::Base.rollback_db_transaction, but these don't handle
>> > emulating nesting transactions with savepoints as
>> > ActiveRecord::Base.transaction does, meaning I'd have to reimplement
>> > that seperately - not an insurmountable task, but a sufficiently
>> > complex bit of work to make me nervous. Therefore, has anyone run into
>> > a similar need (to make before(:all) blocks transactional in rspec)
>> > before? if so, how did you manage it?
>> >
>> > Cheers,
>> >
>> > Tim
>> > _______________________________________________
>> > Chat mailing list
>> > Chat at lists.lrug.org
>> > http://lists.lrug.org/listinfo.cgi/chat-lrug.org
>>
>> --
>> Matthew Willson
>> Development Lead, MSP / Playlouder
>>
>> _______________________________________________
>> Chat mailing list
>> Chat at lists.lrug.org
>> http://lists.lrug.org/listinfo.cgi/chat-lrug.org
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lrug.org/pipermail/chat-lrug.org/attachments/20101008/d8093b60/attachment-0003.html>


More information about the Chat mailing list