db class and connection problems

L

Luis Moran

Hello,

I am new in ruby and have a little problem.... I have the following code

class Grid
attr_accessor :host
...
attr_accessor :connection

def initialize (host, user, passwd, dbname)
@host = host
@user = ...
end

def connect
@connection = Mysql.real_connect(@host, @user, @passwd, @dbname)
if @connection then
puts "connected"
end
end

def query
res = @connection.query("select * from table")
return res
end
end

and now from a script

require "the clash file"

db = Grid.new("localhost","user","password","db")
db.connect
db.query

and I get an error cause the database seem to be closed... or which is
the same @connection is null? I only can make it work if I open and
close the database from inside the query method, but this query is
called more than 4000 times in the script and I reach the limit of
connections of my system's TCP/IP

Anyone could help me? I don't understand why I can share @host, @user
and the other attributes among the methods but @connection seems to be
lost.

thanks in advance.
 
B

Brian Candler

Luis Moran wrote:
...
and I get an error

Show the *exact* error - I mean copy-paste it, including the backtrace.
Cross-reference backtrace entries which refer to your own code to the
actual lines of your source.

It would also be useful if you could give a complete small program which
replicates the problem, because it could just be a typo. At first glance
what you've written looks fine, but it's not runnable - e.g. there's no
require 'mysql-ruby' or require 'ruby-mysql'. Also, it's worth
mentioning which mysql library you're using, and what version.
cause the database seem to be closed... or which is
the same @connection is null?

Those are two very different things. One says that @connection points to
some object, but the object says the database connection is closed (it
may have been closed due to some sort of error, for example). The other
says @connection points to nothing at all (well, technically an instance
of the 'nil' object), which could only happen if your own code set
@connection = nil.
I only can make it work if I open and
close the database from inside the query method, but this query is
called more than 4000 times in the script and I reach the limit of
connections of my system's TCP/IP

If that's true, then clearly you're not closing each connection after
using it.

Regards,

Brian.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,816
Latest member
SapanaCarpetStudio

Latest Threads

Top