Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Nov 2009 10:08:26 -0800
From:      Stanislav Sedov <stas@FreeBSD.org>
To:        penty.wenngren@dgc.se
Cc:        ruby@FreeBSD.org
Subject:   Re: Ruby, dbi and PostgreSQL
Message-ID:  <20091111100826.e0dcfdca.stas@FreeBSD.org>
In-Reply-To: <20091111160649.GL74360@picard.dgc.se>
References:  <20091111160649.GL74360@picard.dgc.se>

next in thread | previous in thread | raw e-mail | index | archive | help
--Signature=_Wed__11_Nov_2009_10_08_26_-0800_YXUE.i6/b+m23drQ
Content-Type: text/plain; charset=US-ASCII
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Wed, 11 Nov 2009 17:06:49 +0100
Penty Wenngren <penty.wenngren@dgc.se> mentioned:

> Hello,
>=20
> 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:
>=20
> irb(main):001:0> require 'dbi'
> =3D> true
> irb(main):002:0> dbh =3D DBI.connect("DBI:Pg:test","test","test")
> DBI::InterfaceError: Could not load driver (Could not find driver Pg or p=
g (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_drive=
r'
>     from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:145:in `connect'
>     from (irb):2
>=20
>=20
> 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
>=20
>=20
> # 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
>=20
>=20
> # 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 la=
nguage
> 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 datab=
ases
> ruby18-eruby-1.0.5_1 Interprets Ruby code embedded in a text file like PH=
P/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
>=20
>=20
> I have tried to reinstall ruby and all of its dependencies, but no luck.
>=20
> I hope you can shed some light on what went wrong. The packages that were
> upgraded this morning (iirc) are:
>=20
> 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
>=20
>=20
> // Penty
>=20
> --=20
>=20

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 wi=
th malloc after fork' section in Makefile), but keep in mind that
fork and other fork(2)-based functions won't work.

--=20
Stanislav Sedov
ST4096-RIPE

--Signature=_Wed__11_Nov_2009_10_08_26_-0800_YXUE.i6/b+m23drQ
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (FreeBSD)

iQIcBAEBAgAGBQJK+v2eAAoJEKN82nOYvCd0YncP/Atb8GoW7WevWmoumM3Za69o
JRUeWy/FrzCwv4MY8GWCeRB0qkONjqXegpamd2dlD9tyIbDYD/Pgsy43N9C8Xawn
7Dqkfv+hYvkgzRxcYwojyG9DApNKQtdRirwTJvhMmsemNMfGk9JbSwyChC+MhKwY
vLrw4Lmd4SBhcaezkevbX+dyq74uuilAIbV/vpjVwwoT0ScxiJIMxvMYQkxPEkN7
n2QjfsM2DuRd6cXcR8SNUwU462XPmo+eoIB/EzDmvLXzZH4G1UstxIgJ3T5NhwWF
p5ymf0eN6WFyZUry+q0gOJXjnElTlHCiuZIxFZPRyK5odr6+AZ+UDur8uzFDdl7L
OgShvyqZdfA+Okdk6mVLOLXfiWYDY8ILnb6DmPlmUGzPR2pWahEuJa07tXHf50kO
2ZACSDM0tnvCt4KbzTjpxueX3t9bPL5Mbnmp1et6JEckmQ/YEzW6KH6qDYgAoILO
8aETw09TVsI9bxyjXIbH8YubAnRuG2am95QphHgNUo/GMdixEuh97GsSd7Q/qL72
YqdMh/Zb5GTj85TY+KCfyK0t2XiOtoftAkTCd5IhPrdmfXoeRkcKhahn+HhN5Lgk
UTLBL7DRskQ8SmREaUXK7xmyY4mUpkSvxQwnj+TwFGc5mgqfkuaUhcjxMwYy7y/j
82isD541/Ub538WT7g7j
=e7Xg
-----END PGP SIGNATURE-----

--Signature=_Wed__11_Nov_2009_10_08_26_-0800_YXUE.i6/b+m23drQ--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20091111100826.e0dcfdca.stas>