JRuby Sandbox加快啟動速度

2021-09-01 14:30:00 字數 1126 閱讀 9597

一直很羨慕有些公司的研發流程自動化管理,可以極大的節省時間,而我們公司很多操作要手動去做,為此,我使用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。

通過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 '#' ")

puts 'success'

puts ''

end

啟動速度的問題解決了,不過占去了大約50m的記憶體,始終感覺不太完美。先將將就就湊合湊合著用著吧。

oracleDBConsoleorcl 啟動問題

oracle服務oracledbconsoleorcl啟動失敗解決方案 oracledbconsole服務不能啟動,訪問 http 機器名 1158 em 不能進入em介面,系統事件檢視器裡面記錄 agent process exited abnormally during initializati...

mysql加快插入

在執行插入操作的sql insert into t1 id,name values 1,name1 2,name2 需要匯入資料量很大,現在採用一次匯入10000條,迴圈匯入的方式解決。請問下,一次性匯入多少條最優的,這個插入跟後面的條數有限制嗎?這個跟一次插入多少條沒有關係,mysqsl預設的sq...

加快訪問GitHub

github 192.30 253 112 assets cdn.github com 151.101 88.249 github.global ssl fastly net修改完hosts還不會立即生效,你需要重新整理dns快取,告訴電腦我的hosts檔案已經修改了。輸入指令 sudo etc i...