rubyscript2exe 打包ruby application

用rubyscript2exe 把一个ruby 程序变成exe 文件

1,下载rubyscript2exe.rb 文件
http://github.com/cowlibob/rubyscript2exe.git ,从这里下载的能用。
其它的有个错误
修改也可以:  621:
$0.replace(File.expand_path("./init.rb")) 改成 $_0 = File.expand_path("./init.rb")

2, 直接运行 ruby rubyscript2exe.rb xx.rb
   ........waiting
  你就能得到一个xx.exe

这是我写一个确定xml file 的header encoding 和文件内部encoding 是否相符的程序
里面用到
require 'csv'
require 'nokogiri'
require 'UniversalDetector'
所以先要安装一下
windows
   gem install nokogiri
   gem install rchardet
linux
    sudo apt-get install libxslt1-dev libxml2-dev 
    sudo gem install nokogiri
    sudo gem install rchardet
直接上文件:


require 'rubygems'
require 'csv'
require 'nokogiri'
require 'rchardet'
if(ARGV.size ==0 || (!File.directory? ARGV[0]))
puts "Please give me a folder url."
    url=gets.strip
    if(!File.directory? url)
  puts "Please give me a right folder url."
      exit
end
else
url = ARGV[0]#"/home/dermot/screenshots/clientA/projectA/"
end
File.delete(url.split('/').join('_')+".csv") if File.exist?(url.split('/').join('_')+".csv")
csv_file = CSV.open(url.split('/').join('_')+".csv","w")
csv_file << ["filename","isWellFormed","bomEncoding","headerEncoding","matched"]
def get_info(url)
str = File.read(url)
bom_encoding = CharDet.detect(str)["encoding"]
#is_bom = get_bom(str)
doc=Nokogiri::XML.parse(str)
header_encoding = doc.encoding
#doc.xpath("//p").collect(&:text).to_s
matched = (bom_encoding.include?(header_encoding)) ? "yes" : "no"
is_well_formed = confirm_form(str)
return is_well_formed,bom_encoding,header_encoding,matched

end
def get_bom(data)
if data[0,3] == "\xEF\xBB\xBF":
        # EF BB BF  UTF-8 with BOM
        #@result = {"encoding"=> "UTF-8", "confidence"=> 1.0}
        return "UTF-8_BOM"
    elsif data[0,4] == "\xFF\xFE\x00\x00":
        # FF FE 00 00  UTF-32, little-endian BOM
        #@result = {"encoding"=> "UTF-32LE", "confidence"=> 1.0}
        return "UTF-32LE_BOM"
    elsif data[0,4] == "\x00\x00\xFE\xFF":
        # 00 00 FE FF  UTF-32, big-endian BOM
        #@result = {"encoding"=> "UTF-32BE", "confidence"=> 1.0}
        return "UTF-32BE_BOM"
    elsif data[0,4] == "\xFE\xFF\x00\x00":
        # FE FF 00 00  UCS-4, unusual octet order BOM (3412)
        #@result = {"encoding"=> "X-ISO-10646-UCS-4-3412", "confidence"=> 1.0}
        return "X-ISO-10646-UCS-4-3412_unusual_BOM"
    elsif data[0,4] == "\x00\x00\xFF\xFE":
        # 00 00 FF FE  UCS-4, unusual octet order BOM (2143)
        #@result = {"encoding"=> "X-ISO-10646-UCS-4-2143", "confidence"=> 1.0}
        return "X-ISO-10646-UCS-4-2143_unusual_BOM"
    elsif data[0,2] == "\xFF\xFE":
        # FF FE  UTF-16, little endian BOM
        #@result = {"encoding"=> "UTF-16LE", "confidence"=> 1.0}
        return "UTF-16LE_BOM"
    elsif data[0,2] == "\xFE\xFF":
        # FE FF  UTF-16, big endian BOM
        #@result = {"encoding"=> "UTF-16LE", "confidence"=> 1.0}         
        return "UTF-16LE_BOM"
    end
  return "no"
end
def confirm_form(str)
begin
Nokogiri::XML(str){|config| config.options=Nokogiri::XML::ParseOptions::STRICT}
rescue
return "no"
end
return "yes"
end
def walk_dir(path,csv_file )
dir = Dir.new(path)
dir.find_all do |file|
if (file != "." && file != "..")
       url = path+File::SEPARATOR+file
       if (File.directory? url)
          walk_dir(url,csv_file )                      
       elsif (!(/\.xml$/=~file).nil?)
            csv_file  << [url]+get_info(url)
       end
   end
end
end
walk_dir(url,csv_file )
csv_file.close
puts "finished"

想做成 gui的,可是没找到ruby类似filedialog 的组件,有知道的可以告诉下,3xu~!

你可能感兴趣的:(xml,linux,git,Ruby,rubygems)