From owner-freebsd-ruby@FreeBSD.ORG Thu Nov 12 16:24:33 2009 Return-Path: Delivered-To: ruby@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 187201065670; Thu, 12 Nov 2009 16:24:33 +0000 (UTC) (envelope-from penty@dgc.se) Received: from smtp05.dgcsystems.net (smtp05.dgcsystems.net [83.241.254.75]) by mx1.freebsd.org (Postfix) with ESMTP id 828918FC17; Thu, 12 Nov 2009 16:24:32 +0000 (UTC) Received: from picard.dgc.se (220.248.181.62.in-addr.dgcsystems.net [62.181.248.220]) by smtp05.dgcsystems.net (Postfix) with ESMTP id C3A8A6A0786; Thu, 12 Nov 2009 17:24:30 +0100 (CET) Received: by picard.dgc.se (Postfix, from userid 1000) id 937A2B833; Thu, 12 Nov 2009 17:24:30 +0100 (CET) Date: Thu, 12 Nov 2009 17:24:30 +0100 From: Penty Wenngren To: Stanislav Sedov Message-ID: <20091112162430.GP74360@picard.dgc.se> References: <20091111160649.GL74360@picard.dgc.se> <20091111100826.e0dcfdca.stas@FreeBSD.org> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <20091111100826.e0dcfdca.stas@FreeBSD.org> User-Agent: Mutt/1.4.2.3i Organization: DGC Solutions AB Cc: "ruby@FreeBSD.org" Subject: Re: Ruby, dbi and PostgreSQL X-BeenThere: freebsd-ruby@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: penty.wenngren@dgc.se List-Id: FreeBSD-specific Ruby discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Nov 2009 16:24:33 -0000 On Wed, Nov 11, 2009 at 07:08:26PM +0100, Stanislav Sedov wrote: > On Wed, 11 Nov 2009 17:06:49 +0100 > Penty Wenngren 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@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