たむらです。 五樹島さん 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種類があることが良いと思います。 これは、全面的に賛成です。 たむら