挖井

类库大魔王的挖井日记

挖一口属于自己的井


使用Apache作为Gems服务器

  这个想法有好几天了,在网上搜来搜去,也没找到多少有用的东西,不过今天晚上加班,还是弄到基本可用的程度了。
  首先需要明确一点是,所谓的RubyGem服务器其实是一个非常普通的http服务器。在公司里那台公用服务器上,自动化组的人用ruby发布包里自带的gem_server.bat运行了一个脚本,提供gem服务。打开这个bat文件看看,其实是个Windows批处理脚本和ruby脚本混合的东西,它开头一条语句将处理流程跳转到最后,运行ruby.exe来执行自身,中间则是一段一段的html代码和ruby代码,最主要的是最后一段ruby代码,通过WEBRick包提供的功能,在本地开设了一个http服务,并动态处理远程连接的http请求。其中最重要的是yaml请求,远程客户端请求yaml文件,其实它是一个对服务器上所有的gem包的索引,有了这个索引文件,客户端知道服务器上有效的gem包版本和具体路径,然后同样是通过http协议下载需要的gem包,并安装到本地。
  有了这些基础,接下来的就好办了。Apache随便哪里都能弄到,基本配置也非常简单,就是改一下端口,设置几个别名,把gem服务器常用的几个目录添加上。一般需要/、/gems/、/doc_root/、/yaml这4个路径,其中/gems/和/doc_root/就是ruby在文件系统目录的直接映射,/和/yaml要通过脚本刷新,脚本不用自己写,只要拿gem_server.bat改一下就行了,原本它是直接生成字符串返回给http客户端,这里就改成把生成的字符串写入到文件就行了。试了试gem install命令,可以用,解决!
  最后再来啰嗦一下,为什么要用Apache来作为Gems服务器。因为那个gem_server.bat用ruby来启http服务器,却有非常严重的内存泄漏问题,只要客户端连接稍微多一点,内存占用就直线飚升,随随便便就能到1.5G,所以,就是不能用它!

本文地址:

https://minidump.info/blog/2008/01/e4-bd-bf-e7-94-a8apache-e4-bd-9c-e4-b8-bagems-e6-9c-8d-e5-8a-a1-e5-99-a8/

上一篇

阿迪牌保暖鞋

  定价¥680,用卡打88折后¥598.40元。今天可谓是速战速决,吃完中饭回来休息了一下,立马决定去买东西,刚出小区大门口,就看到辆满载着人的335缓缓驶来,挤上去,男的在这方面就是有优势,不怕被人趁机骚扰的同时,内心邪恶点的可以趁机骚扰一下车上的ppmm,不过我的胆子还不够大,革命尚未成...…

Water 全文阅读
下一篇

想学学脚本语言

  这次是真的想学一下Python和Ruby这样的脚本语言了,主要是它们的开发效率都似乎比较高,有大而全的库,很适合写些小程序,完成些小功能。几次去书店和小卖部,看到几本相关的书,都想买下来,但最后都还是忍住了,想想我买了来很可能还是束之高阁了,而且网上一般都能找到英文电子版的。  对于这两个...…

Software 全文阅读