Todd Benson
1/5/2009 4:29:00 PM
On Mon, Jan 5, 2009 at 10:02 AM, Darin Ginther
<darin.ginther@allwebleads.com> wrote:
> So I'm able to exercise creating my own class and returning an object
> from that class. I'm having trouble treating the return as an integer
> (for the purpose of a < or > compare).. Yet another noob syntax
> question.
>
>
> compare.rb:
> myinitialdbcount = Dbutil.new(mydb, dbuser, dbpw, counttable,
> leadtype)
> puts "Initial Count:"
> initialcount = myinitialdbcount.count_table{ |data| p data }
>
> This returns:
> Initial Count:
> 213912
>
>
>
> If I try to simply print (put) it:
> puts myinitialdbcount.count_table{ |data| p data }
>
> This returns:
> nill
>
>
> I think I need to "to_int" this object or get it into a state where I
> can assign it to a local variable... There is something I dont
> understand here.
>
>
>
> dbutil.rb:
> def count_table
> dbh= DBI.connect(@mydb, @dbuser, @dbpw)
> sth = dbh.execute("SELECT count(*) FROM #@table where type_code =
> #@type_code")
> row = sth.fetch
> yield row[0]
> sth.finish
> dbh.disconnect
> end
The count_table method will return whatever the last statement in the
method returns, which, in this case is dbh.disconnect. My guess is
that disconnect always returns nil unless you are already
disconnected. So, in essence, you are saying, puts nil. It should
still print the data to your output stream (most likely standard
output), though, because that's what your block is doing with the
yielded value row[0].
Todd