2

私はRubyを扱うタスクを割り当てられましたが、私はRubyに慣れていないので、それを解決するための適切な解決策をインターネットで探しています:

  1. 実際に合格または不合格に分けられた Web ページにログ ファイル レポートのリストがあります。
  2. ログ ファイルを取得して、Jenkins Junit XML ファイル形式と互換性のある形式に変換する必要があります。
  3. すべて、ログから XML への移行は Ruby で作成する必要があります。

何か案は?!

私はインターネット全体を調べて情報を見つけましたが、これを解決する方法について明確なアイデアはまだありません.

これを簡単にする Ruby ライブラリはありますか? 誰もこのようなことを扱ったことがありますか?

4

2 に答える 2

1

必要な形式が示されておらず、Jenkins が何を必要としているのかはわかりませんが、XML の作成は簡単です。残念ながら、あなたが望むものは本やいくつかの記事であり、これは Stack Overflow の範囲を超えています。基本ですが…

XML ドキュメント全体のテンプレートを作成するERBなどのテンプレート システムを使用するか、 Nokogiri::Builderを使用して XML を生成するか、従来の方法で簡単な文字列補間を使用して XML を作成することができます。

syslog ファイルは通常、少なくとも最初のいくつかのフィールドについてはかなり適切に構造化されており、その後にさまざまなコマンドの出力である自由形式のテキストが続きます。Apache のログ ファイルも同様で、テキストの列の後に、自由形式ですが簡単に解析できるテキストが続きます。あちこちに宝石があり、ログを解析する方法に関するチュートリアルがあるので、検索すると何かが見つかります。アイデアは、読み取った各行を XML ノードに割り当てることができるテキストに分解したいということです。

フィールドを作成したら、それらをテンプレートに代入したり、Ruby で変数を文字列に補間したり、Builder を使用してタグ間にテキストを追加したりできます。

それほど難しくはありませんが、いくつかの小さなタスクを実行する必要があります。

次のような XML が必要な場合は、文字列補間を使用します。

<xml>
  <tag1>
    <tag2>some text</tag2>
    <tag2>some more text</tag2>
  </tag1>
</xml>

次のように作成できます。

var1 = "some text"
var2 = "some more text"
xml = %Q{
<xml>
  <tag1>
    <tag2>#{var1}</tag2>
    <tag2>#{var2}</tag2>
  </tag1>
</xml>
}
puts xml

同様に、ERB を使用する場合:

require 'erb'

var1 = "some text"
var2 = "some more text"

template = ERB.new <<-EOF
<xml>
  <tag1>
    <tag2><%= var1 %></tag2>
    <tag2><%= var2 %></tag2>
  </tag1>
</xml>
EOF
puts template.result(binding)

どの出力:

<xml>
  <tag1>
    <tag2>some text</tag2>
    <tag2>some more text</tag2>
  </tag1>
</xml>

または、Nokogiri::Builder を使用して:

require 'nokogiri'

var1 = "some text"
var2 = "some more text"
builder = Nokogiri::XML::Builder.new do |node|
  node.xml {
    node.tag1 {
      [var1, var2].each do |t|
        node.tag2(t)
      end
    }
  }
end
puts builder.to_xml

どの出力:

<?xml version="1.0"?>
<xml>
  <tag1>
    <tag2>some text</tag2>
    <tag2>some more text</tag2>
  </tag1>
</xml>
于 2012-12-13T15:26:24.000 に答える