[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ruby-talk
Subject:    Re: using AR and fixtures for testing *outside* of Rails?
From:       zdennis <zdennis () mktec ! com>
Date:       2006-05-31 20:21:37
Message-ID: 447DFAFF.5080601 () mktec ! com
[Download RAW message or body]

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Pistos Christou wrote:
> unknown wrote:
> 
> > I'm working on a program that manipulates and stores a lot of data in
> > a database via ActiveRecord. I'm having a heck of a time trying to
> > 
> > Anyone have experience with this type of work? Care to share any tips
> > on getting this to work?
> 
> 
> A bit away from your original topic (and perhaps this belongs on the 
> Rails mailing list), but: I'd be interested to hear if you run into any 
> problems using AR outside of Rails.  I have been writing an application 
> (IRC game) which uses AR with PostgreSQL, and I have had uncountable 
> problems due to the way AR connects to the database.  I am constantly 
> hitting the maximum connection limit, and stray PostgreSQL child 
> processes are always being left around.
> 
> What DB are you using?
> 

Let me guess, your IRC game is multi-threaded? AR stores connections based on the \
Thread.current_thread.id (or at least it does in 1.13.2, things changed slightly in \
1.14.2). I ran into this problem as well. If you are using AR 1.13.2 I can give you a \
fix, otherwise you'll have to do it yourself or wait about a week for me to patch \
1.14.2 (if it needs it).

Here is the code:
- -------------------
# Attempt to load active-record version, but if this dies, then don't complain
# Newer versions of rails seem to include VERSION by default, however \
activerecord-1.13.2 doesn't. begin ; require 'active_record/version' ; rescue \
LoadError; end

# This includes changes to ActiveRecord 1.13.2
class ActiveRecord::Base

        # This is overridden because ActiveRecord 1.13.2 stores database connections \
                based on the
        # Thread id. The processor uses a new thread for each new set of files to \
process.  # We want the same connection to be used.
        #
        # Version 1.14.2 no longer has the class variable @@connection_cache, so we \
should  # not redefine this method if we are at or above that version.
		if ActiveRecord::VERSION::STRING < '1.14.2'
    	    def self.connection
                @@connection_cache[123456][name] ||= retrieve_connection
	        end
		end
end
- ---------------------

How this helps,

Zach

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFEffr/Myx0fW1d8G0RAkJLAJ9YeHhrlNCce4HwQGC+StwhAv4xEgCeLMX9
LgMa1ecsMSCxynmCRs0BOYc=
=Igay
-----END PGP SIGNATURE-----


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic