たむらです。

五樹島さん write:
> この事に関してなのですが、私がモジュール作成に詳しくない
> ため勘違いがあるのかもしれませんが、たとえばpostgres の
> DB接続部分にC言語が使われていますよね。そのため現状では、
> PostgresをRuby on Windowsから使うためには、Rubyの最コン
> パイルが必要なのではないかと思います。一般的に、DB接続の
> モジュール作成のために、C言語で記述しなくてはいけない個
> 所があるのでしょうか?もしそうであるなら、DBIのような共
> 通インターフェースが必要だと思います。Cで書かなくてはい
> けない部分が共通インターフェースとして提供されているなら、
> 移植性が高まると思います。たとえば、Windows版は、共通部
> 分だけ実行モジュールにリンクしていただければ、差分の部分
> はRubyで書かれるでしょうから、Windowsからあらゆるデータ
> ベース接続が可能になります。

Postgres を Ruby Win32 で利用するのは、現状ではかなり難しいと
思われます。
# Cygwinを利用すると出来るかな。
で、これは、Postgres の C用のライブラリを前提としているためで
この部分のインターフェースがすでにあるために、モノによって
共通インターフェースを設計するのは大変だと思われます。

一応、Winには dbへの接続の共通インターフェースとして ODBC/UDB
があるので、これを利用するほうが筋なんでしょうね。
# ただしそれこそ共通インターフェースをラッパークラスで用意して
# Unix系OS と同様にするとかね。

なんちゃって ADO クラスでも現状で Postgres との接続は確認してます。
# ちょっと、バージョンアップしてたりして。

class ADOconn
  def initialize(str)
    require 'win32ole'
    @ado = WIN32OLE.new('ADODB.Connection')
    @ado.Open str
  end
  def close
    @ado.Close
  end

  def query(sql)
    rs  = @ado.Execute(sql)
    unless rs.State == 0 # 1 as return Recordset Object
      result = []
      until rs.EOF
        l = []
        for r in rs.Fields
           l << r.Value
        end
        result << l
        rs.MoveNext
      end
      rs.Close
      return result
    else
      return true
    end
  end
end
if __FILE__ == $0
# for PostgreSQL /w ADO+ODBC
  conn =ADOconn.new( "Driver={PostgreSQL};Server=Server;" + \
                     "Uid=tamura;Pwd=;Database=tamura")

#  conn.query "INSERT INTO shinamono VALUES ('kaki', 300);"
#  conn.query "INSERT INTO shinamono VALUES ('kaki', 300);"
  conn.query("DELETE FROM shinamono WHERE hinmei = 'kaki';")
  conn.query "INSERT INTO shinamono VALUES ('kaki', 300);"
  conn.query("SELECT * FROM shinamono").each do |r|
    puts r.join("\,")
  end
  conn.close
end

> 上記までがもし誤解であったとしても、
> 
> 中村暁史Nakamura Akifumiさんの<37E672A5FA.BC58.BXQ04723 / nifty.ne.jp>から
> >友人のハナシによると、
> >一般的すぎても、逆に専用すぎても、
> >他人に使ってもらえる可能性がある、
> >というものらしいです(^^;
> >要するに「両極端」がイイらしい。
> 
> というご意見どおり、汎用的で一般的なものと、専用的なもの
> の2種類があることが良いと思います。

これは、全面的に賛成です。

   たむら