Ruby, dbi and PostgreSQL

Stanislav Sedov stas at FreeBSD.org
Wed Nov 11 18:08:37 UTC 2009


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-ruby/attachments/20091111/1abeda7b/attachment.pgp


More information about the freebsd-ruby mailing list