首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

组合ruby写的一个校验工具

2013-02-03 
结合ruby写的一个校验工具??那么到这里,我们第一步通过svn拿到前端要发布的文件信息了;{下面是svn log常用

结合ruby写的一个校验工具

?

?

那么到这里,我们第一步通过svn拿到前端要发布的文件信息了;

{下面是svn log常用的几个参数

svn log [PATH]

svn log URL [PATH...]

?

它有几个参数:

--revision (-r) REV

--quiet (-q) 不打印信息,或只打印概要信息

--verbose (-v) ?打印附加信息

--targets FILENAME 传递文件 ARG 内容为附件参数

--stop-on-copy 可以关闭这种行为,这可以用来找出分支点

--incremental 给予适合串联的输出

--xml ?输出为 XML

全局配置项说明

--username USER 指定用户名称 ARG

--password PASS 指定密码 ARG

--no-auth-cache 不要缓存用户认证令牌

--non-interactive 不要交互提示

--config-dir DIR 从目录 DIR读取用户配置文件

}

?

?

第二步:读取XML文件,根据提交用户名字拿到该用户更新的文件,下面是具体的实现方式:

?

先附上一段xml内容:

<?xml version="1.0" encoding="UTF-8"?>

<log>

<logentry

? ?revision="7842">

<author>daqiu.lym</author>

<date>2012-12-27T09:49:13.386760Z</date>

<paths>

<path

? ?action="M"

? ?kind="">/trunk/malldetail/assets/4.0a/common/util.js</path>

<path

? ?action="M"

? ?kind="">/trunk/malldetail/assets/4.0a/other/ishare.js</path>

</paths>

</logentry>

</log>

?

?

?

?

?

这里需要补充下,有将trunk替换为 apps,以及将assets去除,是为了方便第三步拼接URL校验;

感兴趣的还可以了解下sub或者gsub方法来进行替换的区别,他们两个方法第一个参数都是接受正则表达式。其中,sub方法替换掉第一个匹配的地方,而gsub方法替换掉左右匹配的地方,所以这里选择用gsub;

第二步实现方式就这么多了,在这过程中有遇到下面的两情况,最终通过查阅些资料和时间,选择了使用XPath.match

Q2:XPath

**不是直接的arr = IO.readlines(%%1) ?#"myfile" 因为不需要太多的内容,我们只需要获取部分内容

?

Q3:

?# # ?xml解析

? ? #没有选取

? ? #doc = Document.new(File.open("my.xml"))

? ? #doc.elements.each("log/logentry/paths"){ ?|elem|

? ? # puts elem.attributes["path"]

? ? # ?puts "start"

? ? #}

第三步:将数组中的文件名放到CDN校验平台逐一校验

?校验平台: http://assets.f2e.taobao.net/?

这里是直接的将文件名以及路径拼接到校验平台后的方式来实现:

?

 #访问到查看页面    url="http://a...../"    ie = IEModel.start(url)    #将更新的文件拼到URL中,然后检测更新的文件是否被同步到每个节点    for $i in 0...(arr.size()-1) do      # 拼接URL      urla="http://a.cn"+arr[$i].to_s      ie.goto(url+"?path="+urla)

?

?

然后校验页面的返回信息,根据返回信息作出相应的操作;

到这里为止,三部曲就完成了,这里还需要更多优化,目前这个需要依赖ruby的环境,我在这里抛砖引玉,希望大家有更好的更简洁方便的方法,然后一起来探讨。

?

?

?

?

热点排行