Windows下安装Rails的PostgreSQL驱动
更新:2007- 09-01
內容:
Ruby下有两种PostgreSQL驱动:
第一种,原生Ruby驱动,纯Ruby编写
Windows下安装:
>gem install postgres-pr
或者直接从http://rubyforge.org/frs/download.php/3858/postgres-pr-0.4.0.gem下载,目前最新版本为0.4.0。下载完成之后执行
>gem install postgres-pr-0.4.0.gem
第二种,基于libpq C库实现,性能更好一些。
Windows下安装:
从http://rubyforge.org/frs/download.php/9554/ruby-postgres-0.7.1.2006.04.06-mswin32.gem下载,目前最新版本为0.7.1。下载完成之后执行
>gem install ruby-postgres-0.7.1.2006.04.06-mswin32.gem
安装完成后,将PostgreSQL安装目录下的bin目录路径添加到Windows环境变量path中。或者将bin目录下的所有dll文件拷贝到Ruby安装目录的bin目录下。
配置:
修改 config/database.yaml文件
删除所有内容并添加以下内容
development:
adapter: postgresql
host: 127.0.0.1
port: 5432
username: test
password: test
database: test
encoding: UTF-8
test:
adapter: postgresql
host: 127.0.0.1
port: 5432
username: test
password: test
database: test
encoding: UTF-8
production:
adapter: postgresql
host: 127.0.0.1
port: 5432
username: test
password: test
database: test
encoding: UTF-8
其他可选参数为:
allow_concurrency: false
schema_search_path: myapp,sharedapp,public
schema_order: myapp,sharedapp,public
min_messages: NOTICE
这些参数中
adapter参数必须指定为 postgresql (如果使用PostgreSQL数据库的话)
host为数据库服务器所在主机,默认为localhost
port为数据库服务器所监听的端口号,默认为 5432,
username为登录用户名,默认为空
password为登录密码,默认为空
database为连接的数据库名称,也必须指定。
encoding为客户端编码,默认为该数据库的默认客户端编码,,一般情况下建议和页面编码一致,推荐使用UTF-8,驱动通过执行SET client_encoding TO
allow_concurrency默认为false,表示是否允许并发访问,从驱动的代码来看,postgres-pr并未实现并发访问,所以,当使用postgres-pr驱动时,只能设置为false或者不设置该参数。而基于libpq C库实现的ruby-postgres支持该参数,可已设置为true,不过,建议不设置该参数。
schema_search_path和schema_order等效,为schema搜索顺序。
从activerecord中的代码来看:
pga.schema_search_path = config[:schema_search_path] ll config[:schema_order]
会优先使用schema_search_path配置,如果schema_search_path没有设置,则使用schema_order参数,如果二者都没有设定,则使用当前数据库默认schema_search_path
min_messages 为客户端信息的详细程度,可设定为 DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, LOG, NOTICE, WARNING, ERROR, FATAL, 和PANIC。越靠后的数值细节越少,默认值为NOTICE。 驱动通过执行 SET client_min_messages TO
测试一下,假定Rails程序为MyApp
C:\workspace\MyApp>ruby script/console
>> Loading development environment.
>> ActiveRecord::Base.find_by_sql "SELECT * FROM tests "
>> …
更多设置,请参考http://wiki.rubyonrails.com/rails/pages/PostgreSQL
客户端信息的详细程度 ,请参考http://www.pgsqldb.org/pgsqldoc-8.1c/runtime-config-logging.html
沒有留言:
張貼留言