[LRUG] Same query, different results
Richard Taylor
richard at richt.co.uk
Mon Jan 23 07:53:17 PST 2012
Hi Jono,
Is your Retailer created by the spec? I think the tests are run in a transaction that gets rolled back, so only the db session that created the object will be able to see it, this would explain why you can't see it anywhere else.
--
Richard Taylor
On Monday, 23 January 2012 at 15:45, Jonathan wrote:
> Hi there,
>
> Long time lurker, first time caller. I've come across a strange
> problem in my rails tests and I've seen a lot of good advice come from
> this list.
>
> I'm dealing with an old app (using rails 2.3 and postgres), written
> years ago by people unknown and I've decided to get rid of the old
> fixtures and replace them with factories and transactional specs.
>
> I have a spec where a model is created (Retailer), it's an acceptance
> spec and it calls out to an instance of the app running in test mode
> to see if the retailer exists. It turns out that it doesn't. But it
> should.
>
> Some debugging has revealed that the model is accessible in the spec,
> but nowhere else (not in the instance of the app or even the postgres
> command line).
>
> I've been printing debug information and looking through logs for a
> while now, this is the latest thing I've done which indicates to me
> that I have no idea what's wrong:
>
> In the spec:
>
> puts "retailers: #{Retailer.count}"
> puts "waiting..."
> sleep(60)
> puts "retailers: #{Retailer.count}"
>
> The results are:
>
> retailers: 1
> waiting...
> retailers: 1
>
> During the sleep(60) I go to the psql command line and type this:
>
> select count(*) from retailer;
> > 0
>
>
> I've changed the postgres logs to print out debug information and I get this:
>
> (2012-01-23 15:21:00 GMT, database: pi_test, user: testuser) LOG:
> statement: SELECT count(*) AS count_all FROM "retailer"
> (2012-01-23 15:21:04 GMT, database: pi_test, user: testuser) LOG:
> statement: select count(*) from retailer;
> (2012-01-23 15:22:00 GMT, database: pi_test, user: testuser) LOG:
> statement: SELECT count(*) AS count_all FROM "retailer"
>
> The first and last lines are coming from rails, the middle line is my
> command line statement.
>
> Does anyone have any idea where to look next? They're accessing the
> same database, with the same user, executing (pretty much) the same
> thing, and they're getting different results!
>
> Thanks,
> Jono
> _______________________________________________
> Chat mailing list
> Chat at lists.lrug.org (mailto: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/20120123/5994ce6e/attachment-0003.html>
More information about the Chat
mailing list