一直很羡慕有些公司的研发流程自动化管理,可以极大的节省时间,而我们公司很多操作要手动去做,为此,我使用Ruby语言写了不少脚本半自动化这些操作。
原来我一直使用JRuby来运行脚本,一直受困于它缓慢的启动速度。于是我在前些时候利用MRI中Win32::Clipboard替换了Swing中剪切板操作,从而将大部分脚本移植到了MRI 1.9下,来解决了启动速度的问题。
不过不是所有的脚本都能很好的移植到MRI下,有一些脚本使用了SVN操作,在JRuby中我使用SVNKit写了一个SVN操作类,开发一个脚本操作svn导出我提交的代码到指定目录,然后手工上传到测试服务器给产品经理看效果。在MRI里我还没有找到操纵SVN的好方法。
我想过一个方法,就是写一个commander.rb ,常驻内存,按下回车后通过load执行SVN操作脚本,代码原型如下:
while true
puts "press any key to run svnchangepath.rb"
gets
filename='svnchangepath.rb'
load filename
puts 'success'
puts ''
end
这个方法的确能加快速度,不过后面的执行结果不太正确,原因是每次load后执行的环境被污染了,容易出现很奇怪的bug。
那有没有办法让load执行在一个独立的JRuby环境中呢,我想到了JRuby samples中的MVM功能,尝试失败,直到我找到了JRuby Sandbox这个gem,才真正解决了这个问题,它的github地址:
https://github.com/omghax/jruby-sandbox
通过jgem install jruby_sandbox安装这个gem,然后修改上述代码,将load在sandbox中运行,问题解决。
#encoding: utf-8
require "sandbox"
while true
puts "press any key to run svnchangepath.rb"
gets
filename='svnchangepath.rb'
sand = Sandbox::Full.new
sand.eval("load '#{filename}' ")
puts 'success'
puts ''
end
启动速度的问题解决了,不过占去了大约50M的内存,始终感觉不太完美。先将将就就凑合凑合着用着吧。
分享到:
相关推荐
JRuby沙盒 JRuby沙箱是_why怪异的怪异沙箱在JRuby中的重新实现,并且很大程度上基于Ola Bini的 ,但已针对JRuby ... 这将构建lib/sandbox/sandbox.jar文件,该文件将被lib/sandbox.rb加载。 基本用法 沙盒为您提供了一
JRuby本质上也是启动一个jvm,然后去读Ruby脚本并解释执行(也可以编译),因此jprofiler理所当然也可以去监控jruby脚本的执行。
jruby安装包 和 jruby的lib库 JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合...另一方面,Java平台及其虚拟机、库和 应用服务器的速度、稳定性和功能方面却一直在提升,现在已被公认为是开发高端服务器
jruby是一个ruby的解析器,可将ruby解析为java文件,jruby作为ruby解析器时刻调用java代码
jruby-1.3.1.jar包 解决org.jruby.exceptions.JumpException 等报错
jruby-src-1.0.zip
本文介绍了JRuby的安装与配置。JRuby的安装需要JRuby以及JDK,本文使用的版本分别是JRuby 1.1.2以及Java 1.6。至于JRuby配置,文章主要介绍了测试JRuby安装的方法。
jruby-complete-1.7.19.jar,java版本的ruby解析器
org.jruby.rar
This book introduces you to three JRuby deployment strategies that give you the performance and scalability you need, while you use a language designed for rapid development. Explore common ...
jruby-bin-1.3.1.zip 用于jruby语言研发的必要工具
JRuby window X64 开发软件
jRuby On Rails WEB 2.0
JRuby语言实战技术,java下运用ruby
jruby 1.9.6 win64
jruby与java使用开发,听说jruby能是swing的调用变为更简单
JRuby在Java测试中的应用,使用脚本语言,高效快进行Java程序测试。
jruby-1.5.5+OperaWatir+RSpec
对于Jruby、Jython和Groovy三种动态语言,长期以来很多人犹豫于如何选择它们。本文提出一个非常有力的例证证明:如果你是一个基于Java虚拟机的开发者,那么请放弃Jruby和Jython。
Now you can bring the best of Ruby into the world of Java, with Using JRuby. Come to the source for the JRuby core team’s insights and insider tips. You’ll learn how to call Java objects seamlessly ...