<   2009年 03月 ( 3 )   > この月の画像一覧

rubyで[BUG] Segmentation fault その後

ruby-pg-0.7.9.2008.10.13をVISTA環境でコンパイルするとDBIで使用できずに、[BUG] Segmentation faultが表示されて落ちる件のその後。

環境はVISTA SP1、VISUAL C++ 2008。

ためしにもう一台もっているPC( XP Pro )でVISUAL C++ 6.0でコンパイルしたpg.soを
「C:\ruby\lib\ruby\site_ruby\1.8\i386-msvcrt」にコピーしてみた。

ビンゴ!

DBIが動く。
ちなみにVISUAL C++ 2005でコンパイルしたpg.soではだめだった。

しかしVISUAL C++ 6.0 もうサポート終了だし、VISTAにインストールしようとすると「互換性」なんちゃらかちゃっらのメッセージが出てくる。正常にインストールできないみたいだ。

Ruby本体をOneClickInstaller版使っているのが悪いのかね。

しかし、Ruby本体をVisual C++ 2008でコンパイルする気にはさすがにならない。
とりあえず、Rubyの学習が目的なので現状でよしとする。
[PR]
by nora1962 | 2009-03-29 01:33 | PC

DBD-pgをインストール

windows vista activeperl 5.8.9の環境でpostgresqlにDBI接続したいのだが、DBD-pgがなかなか見つからなかった。
ようやく見つかったので一応メモ。
http://trouchelle.com/perl/ppmrepview.pl
から見つけた。
ppm rep add trouchelle.com http://trouchelle.com/ppm/
でレポジトリを追加して
ppmからDBD-pgをインストール
(ppm install DBD-pg してもいいんだけれど)
[PR]
by nora1962 | 2009-03-26 00:49

rubyで[BUG] Segmentation fault

rubyを始めた。
とりあえず勉強中。

データベース連携をしたいので、MYsql/rubyとruby-pgをインストールしてRUBY/DBIの環境を作ろうとした。
rubyはruby-186-26.exeのone-click-installer版
MYSQLはVer5.0.37
>gem install mysql --no-rdoc
>gem install dbd-mysql
で何とか入ったみたいだ。
「[ruby]Ruby/DBIでMySQLドライバを使うとSegmentation faultになる」という情報があるが、今のところ
大丈夫そう。

問題はruby-pg
「http://kamoland.com/wiki/wiki.cgi?Ruby1.9%A4%AB%A4%E9DBI%A4%C7PostgreSQL%A4%CB%C0%DC%C2%B3」
にそって
* ruby-pg-0.7.9.2008.10.13.tar.gz
* ruby-pg用パッチ - fileruby-pg-0.7.9_pg.c.patch
* dbd-pg-0.3.7.tar.gz
* dbi-0.4.1.tar.gz
を入手

C:\ruby\lib\ruby\1.8\i386-mswin32\config.h
の頭を編集
#if _MSC_VER != 1200
 ↓
#if _MSC_VER < 1200
それと
C:\ruby\lib\ruby\1.8\i386-mswin32\rbconfig.rb

CONFIG["DLDFLAGS"] の「-debug」を「-release」に
CONFIG["LIBRUBY_A"]を「=""」にして

tar zxf ruby-pg-0.7.9.2008.10.13.tar.gz
cd ruby-pg\ext
patch pg.c < ruby-pg-0.7.9_pg.c.patch
ruby extconf.rb
nmake
mt.exe -manifest pg.so.manifest -outputresource:pg.so;2
nmake install

DBD:Pgをインストール

tar zxf dbd-pg-0.3.7.tar.gz
cd dbd-pg-0.3.7
ruby setup.rb config
ruby setup.rb setup
ruby setup.rb install

DBIをインストール

tar zxf dbi-0.4.1.tar.gz
cd dbi-0.4.1
ruby setup.rb config
ruby setup.rb setup
ruby setup.rb install

ところが問題が二つ
require 'pg'
conn = PGconn.connect("localhost",5432,"","","postgres","root","xxx")

とやっても

require 'dbi'
conn = DBI.connect("dbi:pg:postgres:localhost","root","xxx")

とやっても「[BUG] Segmentation fault」が表示され停止してしまうそれもVISTAだけXP Proは問題な
く動いてくれるのだ。
何故だー!


ちなみに
require 'pg'
conn = PGconn.connect("host=localhost dbname=postgres user=root password=xxx")

だと問題なく動いてくれる。
とりあえず、postgresでruby/dbiはVISTAでは無理っぽい。

 
[PR]
by nora1962 | 2009-03-21 23:15 | PC