2016-08-23 21 views
0

私は、各マイクロサービスAPIからマイクロサービスのバージョンをチェックするルビースクリプトを持っています。私は竹でこれを実行し、htmlテーブルとして結果を返します。スレッドスクリプトから余分な文字を削除する

... 
h = {} 
threads = [] 
service = data_hash.keys 
service.each do |microservice| 
threads << Thread.new do 
thread_id = Thread.current.object_id.to_s(36) 
begin 
h[thread_id] = "" 
port = data_hash["#{microservice}"]['port'] 

nodes = "knife search 'chef_environment:#{env} AND recipe:# 

{microservice}' -i 2>&1 | tail -n 2" 
node = %x[ #{nodes} ].split 
node.each do |n| 
    h[thread_id] << "\n<html><body><h4> Node: #{n} </h4></body></html>\n" 
    uri = URI("http://#{n}:#{port}/service-version") 
    res = Net::HTTP.get_response(uri) 
    status = Net::HTTP.get(uri) 
    data_hash = JSON.parse(status) 
    name = data_hash['name'] 
    version = data_hash['version'] 
    h[thread_id] << "<table><tr><th> #{name}:#{version} </th></tr></table>" 
    end 

    rescue => e 
    h[thread_id] << "ReadTimeout Error" 
    next 
    end 
end 
end 

threads.each do |thread| 
    thread.join 
end 

ThreadsWait.all_waits(*threads) 
puts h.to_a 

問題は、私は、HTMLテーブルに出力名とバージョンにしたいと私はスレッドを置けば、それは各ラインの間にいくつかのランダムな文字列を生成していることである:

<table><tr><th> microservice1:2.10.3 </th></tr></table> 
bjfsw 
<table><tr><th> microservice2:2.10.8 </th></tr></table> 

答えて

1

あるランダムな文字to_s(36)で生成されたハッシュのキー。

puts h.values.join("\n") 

ようなものでputs h.to_aを交換し、あなただけのデータではなく、キーが表示されます。

kernel#p hまたはputs h.inspectを使用して確認できます。

+0

ありがとう、私はループを持っているという事実に直面しているhtmlテーブルにどのように出力を設定できますか? –

関連する問題