以下の構文で freetds および tinytds gem を使用して MSSQL 2008 データベースにクエリを実行する場合:
db = TinyTds::Client.new(:username => ...)
select = db.execute("EXEC dbo.__stored_procedure__")
db.close
次に、この行により、Ruby が Windows でクラッシュします。
select.each {|x| p x}
単純な選択を照会するときの奇妙なこと:
select = db.execute("SELECT field FROM table")
select.each
クラッシュしません - ループもしません
Webrick も Rails コンソールもクラッシュしません。
しかし、コードを次のように変更すると:
db = TinyTds::Client.new(:username => ...)
select = []
db.execute("EXEC dbo.__stored_procedure__").each { |x|
select << x
}
db.close
次に、それは魅力のように機能します(選択しても)。
WindowsよりもOSでうまく機能しないでください...