在ruby程序中运行def

时间:2013-09-09 09:58:32

标签: ruby

我是编程的初学者并编写了这个小程序:

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 

但是如何调用def parse_file?

3 个答案:

答案 0 :(得分:5)

只需在文件末尾添加您想要的任何内容即可。 Ruby脚本只是脚本,它们正在被解释:

…
end

parse_file   # ⇐ HERE YOU GO

答案 1 :(得分: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

另一个选择是使脚本可执行。添加shebang作为您文件的第一行:

#!/usr/bin/env ruby

并设置执行标志:

$ chmod +x test.rb

现在您可以使用以下命令运行它:

$ ./test.rb test.xml

答案 2 :(得分:2)

只需添加

parse_file

在ruby文件的末尾