1

私はプログラミングの初心者で、この小さなプログラムを書きました:

Test.rb:

# encoding: utf-8

require 'open-uri'
require 'nokogiri'

def parse_file 
  doc = Nokogiri::XML(File.open("test.xml"))
  parse_xml(doc)
end

def parse_xml(doc)
  doc.root.elements.each do |node|
    parse_tracks(node)
  end
end

def parse_tracks(node)
  if node.node_name.eql? 'kapitel'
    puts 'New Kapitel'
  end
end

私はこのコードを実行する方法を知っています:

ruby test.rb 

しかし、どのように定義 parse_file を呼び出すことができますか?

4

3 に答える 3

6

ファイルの末尾に必要なものを追加するだけです。Ruby スクリプトは単なるスクリプトであり、解釈されています。

…
end

parse_file   # ⇐ HERE YOU GO
于 2013-09-09T10:00:15.640 に答える
3

test.rbファイルの最後でメソッドを呼び出すことができます。

def parse_file 
  # ...
end

parse_file

そして、それを実行します

$ ruby test.rb

または、ファイルをそのままにして、ライブラリとして要求し、メソッドを手動で呼び出します。

$ ruby -r test.rb -e "parse_file"

ファイル パスをハードコーディングするのではなく、スクリプトを呼び出すときに引数として渡すことができます。ARGV引数には、配列を介してアクセスできます。

def parse_file(file)
  doc = Nokogiri::XML(File.open(file))
  parse_xml(doc)
end

parse_file(ARGV.first)

これで、次のように実行できます。

$ ruby test.rb test.xml

もう 1 つのオプションは、スクリプトを実行可能にすることです。ファイルの最初の行としてシバンを追加します。

#!/usr/bin/env ruby

実行フラグを設定します。

$ chmod +x test.rb

これで、次のように実行できます。

$ ./test.rb test.xml
于 2013-09-09T10:17:42.433 に答える
2

追加するだけ

parse_file

あなたのルビーファイルの最後に

于 2013-09-09T10:00:22.723 に答える