`
RednaxelaFX
  • 浏览: 3015282 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

小试rubyzip的一个脚本

    博客分类:
  • Ruby
阅读更多
呼,今天开始3天都是新人培训,总算可以抽点时间发一帖。
现在在做的东西直接用Maven就能打包成war文件。在自己机上部署测试时,本来就这样拷贝到JBoss的deploy目录下也行,不过有些HTML啊JavaScript啥的为了方便修改,所以还是想把war包解开再扔到deploy目录下。我已经数不清上周我重复做过多少次在项目目录跟JBoss的deploy目录之间拷贝文件,把war后缀改成zip,解压,删zip文件,把目录名加上.war,……
这种事情还是让脚本来做的好。当然这事情直接写bat文件或者shell脚本也能行,不过我想试试rubyzip这个gem,就顺便练手了。

先安装rubyzip:
gem install rubyzip


然后是Ruby脚本本身:
#!/usr/bin/env ruby

require 'rubygems'
require 'fileutils'
require 'zip/zip'
require 'zip/zipfilesystem'

include FileUtils

def unzip zip_file, dest_dir
  Zip::ZipFile.open zip_file do |zf|
    zf.each do |e|
      path = File.join dest_dir, e.name
      mkdir_p File.dirname(path)
      zf.extract(e, path) { true }
    end
  end
end

def deploy war_file, dest_dir
  dest = File.join dest_dir, File.basename(war_file)
  rm_rf dest if File.directory? dest
  unzip war_file, dest
end

# SRC_DIR = File.expand_path '.'
DEST_DIR = 'D:/server/jboss-4.2.2.GA/server/default/deploy'

[
  'alpha/alpha.war',
  'beta/beta.war'
].each {|war_file| deploy war_file, DEST_DIR }

rubyzip的API据说是模仿java.util.zip而来的。呃,真不算方便。把整个文件解压到指定路径这种这么常用的功能居然没有便捷方法直接做,太不爽了。还有啥别的Ruby能用的zip库不,拜托大家推荐几个~

我或许该用Python来写这个的,标准库里就有zip T T
分享到:
评论
5 楼 ray_linn 2010-02-05  
最好还是system("7za...")
4 楼 RednaxelaFX 2009-11-17  
花花公子 写道
zip本身就是win移植过来的,确实jar和open document用zip很奇怪,应该用gzip或者bzip2的

ZIP也算是业界的de facto标准的一例了 =_=
当年Phil Katz不满ARC不让他实现兼容ARC格式的归档管理器才写了ZIP,并且公开了ZIP格式。这比Windows流行早多了……嗯不过PKZIP一开始就是DOS程序没错。
3 楼 RednaxelaFX 2009-11-17  
lwwin 写道
WINDOWS的BAT如何打包ZIP呢……,好像系统虽然可以解包,但是没有内置的ZIP吧?^^

嘛,有各种办法的嘛。我用Ruby也装了额外的库,那写bat也不是说就不能用别的依赖了……例如说装个7-zip就万事大吉,需要的命令行解压程序就有了。
2 楼 lwwin 2009-11-17  
WINDOWS的BAT如何打包ZIP呢……,好像系统虽然可以解包,但是没有内置的ZIP吧?^^
1 楼 花花公子 2009-11-17  
zip本身就是win移植过来的,确实jar和open document用zip很奇怪,应该用gzip或者bzip2的

相关推荐

Global site tag (gtag.js) - Google Analytics