On Tuesday, April 24, 2012 6:55:29 AM UTC-7, Rodrigo Rosenfeld Rosas wrote:
>
> Hello,
>
> I can deal with transactions in RSpec using
>
> around(:each){|example| DB.transaction(savepoint: true) { example.run;
> raise Sequel::Error::Rollback } }
>
This is pretty much the recommended way of doing things. However, the
:rollback=>:always option exists to make it slightly easier.
Moving on, the problem is that I'd like to have a set of records to be
> created for context, but only once or it would be too slow to run the spec.
>
Then just add the records before the spec and delete them after:
before(:all){# Add some records here}
after(:all){# Delete the records here}
> But RSpec doesn't support an around(:all) and Sequel doesn't support the
> usage of transactions without the use of blocks.
>
Well, you could always ask the rspec guys to implement around(:all). The
fact that it doesn't already exist breaks my POLS.
> I'd like to be able to do something like this:
>
> context "some sample records exists" do
> before(:all) do
> @sample_records_transaction = DB.transaction(savepoint: true)
> create_sample_records
> end
>
> after(:all) { @sample_records_transaction.rollback! } # or even raise
> Rollback
>
> # examples here
> end
>
> Could you please add support for using transactions this way?
>
No. Because of how the connection pool works, you need to use blocks for
transactions. You are free to implement such things yourself if you want.
In single threaded mode, you could probably get something that works OK.
Jeremy
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/sequel-talk/-/NkxvZbLC7LcJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sequel-talk?hl=en.