This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 122345 - postgres-pr driver does not work with JRuby
Summary: postgres-pr driver does not work with JRuby
Status: RESOLVED FIXED
Alias: None
Product: ruby
Classification: Unclassified
Component: Rails (show other bugs)
Version: 6.x
Hardware: Sun All
: P3 blocker (vote)
Assignee: Erno Mononen
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-11-20 00:24 UTC by David Vancouvering
Modified: 2008-02-20 14:39 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments
Messages log file (27.17 KB, text/plain)
2007-11-20 00:28 UTC, David Vancouvering
Details

Note You need to log in before you can comment on or make changes to this bug.
Description David Vancouvering 2007-11-20 00:24:36 UTC
Install postgres-pr gem using Gems tool, and then try to follow the Weblog tutorial at
http://www.netbeans.org/kb/60/ruby/rapid-ruby-weblog.html, using postgres as the target database rather than mysql.

When you try to apply the migration, you get the following error:

rake aborted!
uninitialized constant PostgresPR::Connection::UNIXSocket
/export/home/dv136566/netbeans-6.0rc1/ruby1/jruby-1.0.2/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/dependencies.rb:477:in
`const_missing'
/export/home/dv136566/netbeans-6.0rc1/ruby1/jruby-1.0.2/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/connection.rb:140:in
`establish_connection'
/export/home/dv136566/netbeans-6.0rc1/ruby1/jruby-1.0.2/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/connection.rb:25:in
`initialize'
/export/home/dv136566/netbeans-6.0rc1/ruby1/jruby-1.0.2/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/postgres-compat.rb:23:in
`new'
/export/home/dv136566/netbeans-6.0rc1/ruby1/jruby-1.0.2/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib/postgres-pr/postgres-compat.rb:23:in
`initialize'
/export/home/dv136566/netbeans-6.0rc1/ruby1/jruby-1.0.2/lib/ruby/gems/1.8/gems/activerecord-1.15.5/lib/active_record/connection_adapters/postgresql_adapter.rb:23:in
`new'
Comment 1 David Vancouvering 2007-11-20 00:25:38 UTC
I looked at the code, and what's happening is the Ruby postgres driver postgreql-pr is trying to use the local file
socket rather than a TCP socket, as this is the faster mechanism when the PostgreSQL client and server are on the same
machine.  I checked, and /tmp/.s/PGSQL.5432 exists, so the file socket is available.  I also checked, and I can connect
to PostgreSQL just fine using the JDBC driver through the NetBeans DB Explorer.

I googled for the error above, and no such luck.  Also the PostgreSQL wiki page at
http://wiki.rubyonrails.org/rails/pages/PostgreSQL had no tips for this.

I looked at the top of connection.rb and it does a 'require socket'.  I wonder if that's somehow not available in the NB
version?  I looked for the gem 'socket' through the Gem manager, but it doesn't seem to exist.  It looks like 'socket'
is part of the Ruby standard library (http://www.ruby-doc.org/stdlib/libdoc/socket/rdoc/index.html).  Does JRuby not
provide an implementation for UNIX sockets (as compared with TCP/IP sockets)?
Comment 2 David Vancouvering 2007-11-20 00:28:46 UTC
Created attachment 53229 [details]
Messages log file
Comment 3 David Vancouvering 2007-11-20 01:08:49 UTC
Found a reasonable workaround: use the TCP/IP connection rather than the UNIX socket connection.  To do this, edit the
database.yml file and uncomment the following two lines:

  host: localhost
  port: 5432

Downgrading to a P3
Comment 4 David Vancouvering 2008-01-17 19:17:51 UTC
Checking to see when you might evaluate this bug and assign it a target milestone.  IMHO we really should fix this for
6.1, the error is quite confusing and everyone will hit it who tries to use PostgreSQL.
Comment 5 Erno Mononen 2008-01-17 19:45:38 UTC
Do you think that we should use TCP/IP connection by default when the user has selected postgres as the target database 
or that the issue with the socket connection should be fixed? AFAICT the former can be done on the NB side, but the 
latter seems like a JRuby issue and should be filed against it. Probably would be good to test with JRuby 1.0.3 first 
though, perhaps it has been fixed already - I'll try that tomorrow.
Comment 6 David Vancouvering 2008-01-17 20:28:26 UTC
You're right, the underlying issue is the lack of socket support, but I thought that was not going to get fixed any time
soon.  If it's been fixed in JRuby, great!  If not, I say we log the bug, and then work around it by using TCP/IP for now.

Thanks,

David
Comment 7 Erno Mononen 2008-01-18 09:54:52 UTC
I tried with JRuby 1.0.3 and the problem persists, so I filed http://jira.codehaus.org/browse/JRUBY-1996. As a 
workaround I'll change the db configuration to use the TCP/IP connection when generating projects that use JRuby and 
PostgreSQL (until the JRuby issue gets fixed). 
Comment 8 Erno Mononen 2008-02-20 14:39:43 UTC
The JRuby issue I filed was closed, JRuby doesn't support sockets. So I changed the database configuration generator to 
automatically uncomment the host and port attributes that Rails generates but leaves commented out. In addition, host 
and port are always used when using a PostgreSQL connection that is registered in the IDE.

http://hg.netbeans.org/main/rev/507ef2bb7bda