2016-07-12 3 views
1
require 'tiny_tds' 

def client 
    client = TinyTds::Client.new username: 'user', password: 'pass', host: '192.168.4.4' 
    client.execute('use database').do 
    client 
end 

def services(id) 
    out = [] 
    client.execute('exec GetServiceByServiceGroup @ServiceGroup = %s' % id).each(:symbolize_keys => true) do |s| 
    out << {:value => s[:ServiceName] + ' <i>(' + s[:ServiceID].to_s + ')</i>', 
     :child => operational_services(s[:ServiceID])} 
    end 
    out 
end 

def operational_services(id) 
    out = [] 
    client.execute('exec GetOperationalServiceByService @Service = %s' % id).each(:symbolize_keys => true) do |os| 
    out << {:value => os[:OperationalServiceName] + ' <i>(' + os[:OperationalServiceID].to_s + ')<i>'} 
    end 
    out 
end 

out = [] 

client.execute('exec GetServiceGroupByDirection @Direction = 50').each(:symbolize_keys => true) do |service_group| 
    out << {:value => service_group[:ServiceGroupName] + ' <i>(' + service_group[:ServiceGroupID].to_s + ')</i>', 
    :child => services(service_group[:ServiceGroupID])} 
end 

out 

(ツリーを構築)セグメンテーションフォールトをtiny_tds:ルビー、私はエラーを取る

test.irb:28: [BUG] Segmentation fault at 0x0000000000000e 
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux] 

私は、データベースからツリーレベルでツリーを構築したいのですが、私を返すSG =(なぜ 私は関数を書くtiny_tds?現在の戻り値が、他の接続をcleateする「クライアント」。そうでないtiny_tdsが「保留中の結果(TinyTds ::エラー)を持つ新しいAdaptive Serverの操作を開始しよう」と言う

i'am間違っている?

答えて

0

理由はわかりませんが、これらの作業は

def client 
    if @client.nil? 
    @client = TinyTds::Client.new username: 'user', password: 'pass', host: '192.168.4.4' 
    @client.execute('use database').do 
    def @client.execute(sql) 
     puts sql 
     super(sql).each(:symbolize_keys => true) 
    end 
    end 
    @client 
end 
関連する問題