トップ «前の日記(2005-04-12) 最新 次の日記(2005-04-22)» 編集

3 日坊主日記


2005-04-13 [長年日記]

_ [Ruby] ruby/contrib

svn に放り込むときに履歴を残したいと思い interbase-0.03.tar.gz を探してみると見つかった。

http://ftp.sayclub.com/pub/languages/ruby/contrib/

_ [Ruby] Ottawa.rb?

Owatta.rb? と読んでしまう罠。あるいは関西な人:

おったわ。

_ [Ruby][Firebird] fireruby, ruby-interbase で create database, トランザクションオプション

fireruby イイネ。

ruby-interbase で create database

fireruby を読んでいて、ruby-interbase は create database できないような気がした。

Delphi6 だと TIBDatabase.CreateDatabase は isc_dsql_execute_immediate している。IBX で isc_dsql_execute_immediate を使っているのはここだけのようだ。

んで、ruby-interbase は isc_dsql_execute_immediate できない。また、Connection を作らないと execute できない。

でも、ひとつでも db があれば create database できるのか。

実験:

  • test.rb:
 require 'win32/registry'
 firebird_root = nil
 Win32::Registry::HKEY_LOCAL_MACHINE.open('SOFTWARE\Firebird Project\Firebird Server\Instances') do |reg|
   firebird_root = reg['DefaultInstance']
 end
 puts firebird_root
 ENV['PATH'] = "#{firebird_root}\\bin;" + ENV['PATH']
 require 'interbase'
 # db = InterBase.create_database('test.fdb','SYSDBA','masterkey')
 db = InterBase.connect("#{firebird_root}\\help\\help.fdb",'SYSDBA','masterkey')
 # curs = db.execute('select * from topics')
 # require 'pp'
 # pp curs.description
 curs = db.execute("create database 'c:/test.fdb' user 'SYSDBA' password 'masterkey'")
 C:\Program Files\Firebird\Firebird_1_5\
 test.rb:14:in `execute': violation of FOREIGN KEY constraint "" (InterBase::Error)
         from test.rb:14

あれ?

トランザクションオプション

SET TRANSACTION の意味を忘れてしまっている。orz

http://bdn.borland.com/article/0,1410,25686,00.html

ruby-interbase は isc_tpb_version1 になっているのだけど (Delphi6, fireruby は isc_tpb_version3)、Firebird 1.5 のソースを見る限りではこの値は使われていない。

_ [] 山本七平 at 市立図書館

essa さんとこより。 山本七平ブックガイド

「空気」の研究 「空気」の研究

第2版。 紙の変色した本を読むのは久しぶりだなあ。

「常識」の研究 「常識」の研究

書架にあった。

[]