2016-07-12 9 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 

i Fehler nehmen:Rubin, tiny_tds Segmentierungsfehler (Build Baum)

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

Ich möchte Baum aus der Datenbank mit Baumebene bauen, aber tiny_tds zurückkehren mich sg = (warum i Funktion schreiben? „Client“ cleate andere Verbindung, während die Stromrückgabewerte. Else tiny_tds sagen: ‚Der Versuch, einen neuen Adaptive Server Betrieb mit den Ergebnissen der Warteschlange (TinyTds :: Fehler) zu initiieren‘

wo iam falsch?

Antwort

0

Ich weiß nicht warum, aber diese funktionieren

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