[原创]Ruby通过postgre-pr访问PostgreSQL数据库

Python/PHP/Perl 开发与设计
回复
头像
forrid
帖子: 659
注册时间: 2007-04-23 17:40
送出感谢: 0
接收感谢: 0

[原创]Ruby通过postgre-pr访问PostgreSQL数据库

#1

帖子 forrid » 2007-07-03 22:33

测试环境:

代码: 全选

ruby: 1.8.6
rubygems: 0.9.4
postgres-pr: 0.4.0
postgresql: 8.2.4
安装postgres-pr:

代码: 全选

gem install postgres-pr-0.4.0.gem
测试代码:

代码: 全选

require 'postgres-pr/connection'

c = PostgresPR::Connection.new(databasename, username, password)
p c.query('select * from tablename')
执行该代码,报错:

代码: 全选

no such file to load -- postgres-pr/connection (LoadError)
遍寻网络不解,难道是问题太easy,没有人遇到过?
无法,只好一点点分析postgres-pr包,终于让我找到了,原来是require搜索路径的问题,解决方法:

代码: 全选

$LOAD_PATH.unshift '/usr/local/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0/lib'
require 'postgres-pr/connection'

c = PostgresPR::Connection.new(databasename, username, password)
p c.query('select * from tablename')
执行,又会报错:

代码: 全选

No such file or directory - /tmp/.s.PGSQL.5432 (Errno::ENOENT)
这是个什么文件啊?
结果又是遍寻网络不解,还得自己分析。
打开connection.rb,找到了该文件字符串:

代码: 全选

  DEFAULT_URI = 
    if RUBY_PLATFORM.include?('win')
      'tcp://' + DEFAULT_HOST + ':' + DEFAULT_PORT.to_s 
    else
      'unix:' + File.join(DEFAULT_PATH, '.s.PGSQL.' + DEFAULT_PORT.to_s)  
    end
与平台相关,要不用win平台的URI试试看?修改为:

代码: 全选

  DEFAULT_URI = 'tcp://' + DEFAULT_HOST + ':' + DEFAULT_PORT.to_s
    #if RUBY_PLATFORM.include?('win')
    #  'tcp://' + DEFAULT_HOST + ':' + DEFAULT_PORT.to_s 
    #else
    #  'unix:' + File.join(DEFAULT_PATH, '.s.PGSQL.' + DEFAULT_PORT.to_s)  
    #end
执行测试代码,成功~~~
我的PostgreSQL 8.2.4是通过新立得直接安装的,反正找不到UNIX平台下的临时文件。
不管了……

吾生也有涯,而知也无涯,以有涯随无涯,SB啊~~~~~~~~~~
头像
forrid
帖子: 659
注册时间: 2007-04-23 17:40
送出感谢: 0
接收感谢: 0

#2

帖子 forrid » 2007-07-10 16:14

没人关注?
没有用pg-pr,那大虾都用啥?

吾生也有涯,而知也无涯,以有涯随无涯,SB啊~~~~~~~~~~
piggybox
帖子: 5
注册时间: 2007-07-13 1:01
送出感谢: 0
接收感谢: 0

#3

帖子 piggybox » 2007-07-13 1:06

postgres-pr是纯ruby的驱动,性能不好。本地驱动是libpgsql-ruby (apt-get安装, gem安装另外要装pg的dev库,麻烦)
然后require 'postgres' 就可以了:^)
回复

回到 “Python/Php/Perl”