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

JRuby Sandbox加快启动速度

阅读更多
      一直很羡慕有些公司的研发流程自动化管理,可以极大的节省时间,而我们公司很多操作要手动去做,为此,我使用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-sandbox:JRuby VM沙箱

    JRuby沙盒 JRuby沙箱是_why怪异的怪异沙箱在JRuby中的重新实现,并且很大程度上基于Ola Bini的 ,但已针对JRuby ... 这将构建lib/sandbox/sandbox.jar文件,该文件将被lib/sandbox.rb加载。 基本用法 沙盒为您提供了一

    如何监控JRuby脚本的执行

    完成上述步骤后,就可以启动jprofiler并连接到你的JRuby进程,通过其丰富的功能模块监控JRuby脚本的执行情况。例如,你可以: 1. **GC(Garbage Collection)监控**:观察垃圾回收的频率和效率,找出可能导致性能...

    jruby1.7.8版本呢

    JRuby 项目始于1999年,由 Charles Nutter 和 Thomas Enebo 启动,目的是将 Ruby 语言引入到 Java 平台。JRuby 的主要优势包括: - **跨平台性**:由于基于 JVM,JRuby 可以在任何支持 JVM 的操作系统上运行。 - **...

    jruby_windows1.7and bin1.7

    jruby安装包 和 jruby的lib库 JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合...另一方面,Java平台及其虚拟机、库和 应用服务器的速度、稳定性和功能方面却一直在提升,现在已被公认为是开发高端服务器

    org.jruby.rar

    此外,JRuby 还能通过 GraalVM 提升其性能,实现接近原生的执行速度。 【知识点二:JRuby 的使用场景】 1. 企业级应用:JRuby 可用于构建大型、复杂的企业级应用,因为它可以利用 JVM 的成熟性和稳定性。 2. 混合...

    jruby-src-1.0

    标题“jruby-src-1.0”指的是JRuby的一个特定版本——1.0的源代码。JRuby是一种实现Ruby编程语言的Java版本,它允许在Java平台上运行Ruby代码,同时也支持与Java应用程序进行无缝集成。这个压缩包“jruby-src-1.0....

    jruby-bin-1.3.1.zip

    - **bin**:存放可执行文件,如`jruby`命令行解释器,用于启动JRuby环境。 - **lib**:包含JRuby运行所需的库文件,如Ruby标准库的Java实现。 - **docs**:可能包含相关的文档和API参考。 - **examples**:可能...

    如何安装与配置JRuby

    **JRuby 安装与配置指南** JRuby 是一个基于 Java 平台的 Ruby 实现,它允许开发者利用 Ruby 语言的优势同时享受 Java 生态系统的强大功能。在本文中,我们将详细探讨如何安装和配置 JRuby,特别是针对 JRuby 1.1.2...

    走近JRuby

    3. **性能比较**:对比JRuby与其他Ruby实现的性能,包括启动速度、运行效率和内存占用。 4. **开发工具和环境**:推荐使用JRuby的开发工具,如IDE插件(如IntelliJ IDEA的Ruby插件)、构建工具(如Bundler和Gradle...

    jruby_windows_1_6_4安装文件

    **JRuby:Ruby on Windows的完美融合** JRuby是一个开源的、基于Java平台的Ruby语言实现,它允许开发者在Ruby环境中使用Java类库,并且可以让Java应用程序无缝地调用Ruby代码。标题中的“jruby_windows_1_6_4安装...

    jRuby On Rails WEB2.0

    《jRuby on Rails WEB2.0》:将Ruby on Rails融入Java平台的实践指南 《jRuby on Rails WEB2.0》是一部由Ola Bini撰写的书籍,深入探讨了如何将Ruby on Rails这一敏捷开源框架与Java平台相结合,以构建高效、灵活的...

    Ruby-JRuby一个Ruby语言的Java实现

    JRuby的版本"jruby-jruby-7bee00d"可能是一个特定的Git提交版本,这表明它是一个开发版本,可能包含了最新的功能和改进。通常,这样的版本会包含一些实验性的特性,对于开发者来说,他们可以提前试用新功能并提供...

    jruby-1.3.1.jar

    jruby-1.3.1.jar包 解决org.jruby.exceptions.JumpException 等报错

    jruby-complete-1.7.19.jar

    jruby-complete-1.7.19.jar,java版本的ruby解析器

    jruby-1.5.5+OperaWatir+RSpec

    标题 "jruby-1.5.5+OperaWatir+RSpec" 暗示了这是一个关于使用 JRuby 1.5.5 版本、OperaWatir 和 RSpec 进行自动化测试的项目或者资源集合。现在,我们将深入探讨这三个关键组件以及它们在 IT 领域中的应用。 JRuby...

    JRuby+Swing是开发人员钟情的选择

    **JRuby+Swing:开发桌面应用的利器** JRuby 是一种在 Java 平台上实现的 Ruby 解释器,它允许开发人员通过 Java 虚拟机(JVM)执行 Ruby 代码。JRuby 的独特之处在于其能够无缝地集成 Java 库,包括 Java Swing,...

    jruby-core-1.7.12.zip

    标题 "jruby-core-1.7.12.zip" 提供的是 JRuby 的核心库版本 1.7.12,这是一个将 Java 虚拟机(JVM)与 Ruby 语言结合的开源实现。JRuby 允许开发者在 Java 平台上运行 Ruby 代码,同时利用 Java 生态系统的强大功能...

    JRuby window X64 开发软件

    JRuby window X64 开发软件

Global site tag (gtag.js) - Google Analytics