Ruby, dbi and PostgreSQL
Penty Wenngren
penty.wenngren at dgc.se
Thu Nov 12 16:24:33 UTC 2009
On Wed, Nov 11, 2009 at 07:08:26PM +0100, Stanislav Sedov wrote:
> On Wed, 11 Nov 2009 17:06:49 +0100
> Penty Wenngren <penty.wenngren at dgc.se> mentioned:
>
> > Hello,
> >
> > After having upgraded our installed ports this morning we have a few
> > machines that no longer want to play with ruby, dbi and postgres. This
> > is the output I get when trying to do this in irb:
> >
> > irb(main):001:0> require 'dbi'
> > => true
> > irb(main):002:0> dbh = DBI.connect("DBI:Pg:test","test","test")
> > DBI::InterfaceError: Could not load driver (Could not find driver Pg or pg (error:
> > no such file to load -- pg))
> > from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:318:in `load_driver'
> > from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:160:in `_get_full_driver'
> > from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:145:in `connect'
> > from (irb):2
> >
> >
> > irb(main):001:0> require 'dbd/Pg'
> > LoadError: no such file to load -- pg
> > from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
> > `gem_original_require'
> > from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
> > `require'
> > from /usr/local/lib/ruby/site_ruby/1.8/dbd/Pg.rb:40
> > from (irb):1:in `require'
> > from (irb):1
> >
> >
> > # ls -l /usr/local/lib/ruby/site_ruby/1.8/dbd/
> > total 10
> > -rw-r--r-- 1 root wheel 6579 Nov 11 16:17 Pg.rb
> > drwxr-xr-x 2 root wheel 512 Nov 11 16:17 pg
> >
> >
> > # pkg_info | grep ruby
> > mod_ruby-1.3.0 An Apache module that embeds Ruby interpreter within
> > ruby+nopthreads-1.8.7.160_5,1 An object-oriented interpreted scripting language
> > ruby18-aspectr-0.3.5 Ruby libraries for Aspect programming
> > ruby18-bdb-0.6.5_1 Ruby interface to Sleepycat's Berkeley DB revision 2 or lat
> > ruby18-dbd_pg-0.3.8 PostgreSQL driver for DBI-for-Ruby
> > ruby18-dbi-0.4.3 DBI-for-Ruby - a common interface for SQL-based databases
> > ruby18-eruby-1.0.5_1 Interprets Ruby code embedded in a text file like PHP/ePerl
> > ruby18-fcgi-0.8.7 FastCGI library for Ruby
> > ruby18-gems-1.3.5 Package management framework for the Ruby language
> > ruby18-mmap-0.2.6 Ruby interface to manage memory-mapped file objects
> > ruby18-postgres-0.7.9.2008.01.28_1 Ruby interface to PostgreSQL library
> > ruby18-setup.rb-3.4.1 Common installer script for ruby packages
> > rubygem-deprecated-2.0.1 A library intended to aid developers working with
> > deprecate
> > rubygem-postgres-0.7.9.2008.01.28_1 Ruby interface to PostgreSQL library
> >
> >
> > I have tried to reinstall ruby and all of its dependencies, but no luck.
> >
> > I hope you can shed some light on what went wrong. The packages that were
> > upgraded this morning (iirc) are:
> >
> > ruby+nopthreads-1.8.7.160_5,1
> > ruby18-aspectr-0.3.5
> > ruby18-dbd_pg-0.3.8
> > ruby18-dbi-0.4.3
> > ruby18-gems-1.3.5
> > ruby18-postgres-0.7.9.2008.01.28_1
> > rubygem-deprecated-2.0.1
> > rubygem-postgres-0.7.9.2008.01.28_1
> >
> >
> > // Penty
> >
> > --
> >
>
> Hi, Penty!
>
> I'm not sure this is the case, but I'd guess that postgresql client
> library is threaded and ruby is not, so it can't load the postgresql
> library. What FreeBSD version do you use? Pthreaded ruby on everything
> before 7.2 is not fully functional (e.g. fork won't work as it requires
> malloc implementation to support forking in threaded program).
>
> The best way for you if you're using postgresql in ruby will be to
> update the OS to 7.2 or above. You can also try to use ruby with
> threades (by commenting the '# pthreads in earlier versions has problems with malloc after fork' section in Makefile), but keep in mind that
> fork and other fork(2)-based functions won't work.
>
> --
> Stanislav Sedov
> ST4096-RIPE
Hello again!
I have now tried the same on a 7.2 system, and I get the same error:
# uname -mprsv
FreeBSD 7.2-RELEASE-p4 FreeBSD 7.2-RELEASE-p4 #0: Fri Oct 2 08:22:32 UTC 2009
root at amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64 amd64
# pkg_info
autoconf-2.62 Automatically configure source code on many Un*x platforms
autoconf-wrapper-20071109 Wrapper script for GNU autoconf
automake-1.10.1 GNU Standards-compliant Makefile generator (1.10)
automake-wrapper-20071109 Wrapper script for GNU automake
gettext-0.17_1 GNU gettext package
gmake-3.81_3 GNU version of 'make' utility
help2man-1.36.4_3 Automatically generating simple manual pages from program o
libdbi-0.8.3 Database Independent Abstraction Layer for C
libdbi-drivers-0.8.3.1_2 Drivers for libdbi
libiconv-1.13.1 A character set conversion library
libtool-2.2.6a_1 Generic shared library support script
m4-1.4.13,1 GNU m4
p5-gettext-1.05_2 Message handling functions
perl-5.8.9_3 Practical Extraction and Report Language
portaudit-0.5.14 Checks installed ports against a list of security vulnerabi
postgresql-client-8.3.7,1 PostgreSQL database (client)
ruby-1.8.7.160_5,1 An object-oriented interpreted scripting language
ruby18-aspectr-0.3.5 Ruby libraries for Aspect programming
ruby18-dbd_pg-0.3.8 PostgreSQL driver for DBI-for-Ruby
ruby18-dbi-0.4.3 DBI-for-Ruby - a common interface for SQL-based databases
ruby18-gems-1.3.5 Package management framework for the Ruby language
ruby18-postgres-0.7.9.2008.01.28_1 Ruby interface to PostgreSQL library
rubygem-deprecated-2.0.1 A library intended to aid developers working with
deprecate
# irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'dbi'
=> true
irb(main):003:0> dbh = DBI.connect("DBI:Pg:test","test","test")
DBI::InterfaceError: Could not load driver (Could not find driver Pg or pg (error:
no such file to load -- pg))
from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:318:in `load_driver'
from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:160:in `_get_full_driver'
from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:145:in `connect'
from (irb):3
// Penty
--
Penty Wenngren
DGC Solutions AB
More information about the freebsd-ruby
mailing list