Rails 支持 L10N 的插件并不算非常多,而其中的 Gettext 由于 GNU 的缘故应该算是比较普遍的了。相信很多人在对 Rails 项目进行本地化的时候都会接触过这个插件。
但是不知道有多少人在部署 Rails 项目的时候留意过 mongrel 的内存使用情况(这里以 mongrel 举例仅仅是因为比较常见,其他部署方式也会有类似的情况)。至少在我的项目中,mongrel 占用的内存会不停的增长,不得不把所有 mongrel 加入 monit 并把内存占用作为监视条件。
空闲的时候稍微分析过它的源代码。导致内存泄漏的原因其实很简单,插件内部使用一个 Class 的实例对象作为 Hash 的 Key,这部分的资源没有回收导致每次调用方法都会产生泄漏(bound_target)。虽然可以可以用 MonkeyPatching 的方式解决这个问题,但是我始终认为这种方式会带来不可预测的风险。
昨天想起以前做过的 GettextDb 的项目,于是检查了一下 Gettext 的版本情况,发现最近升级的
Gettext 1.91.0 修复了这个漏洞,改用实例对象的 object_id 作为 hash 的 key,避免了过多无法回收的对象产生的泄漏。
相关链接:
http://gettext.rubyforge.org
# how to install gettext gem
gem install gettext
分享到:
- 2008-07-30 17:11
- 浏览 1289
- 评论(0)
- 论坛回复 / 浏览 (0 / 1540)
- 查看更多
相关推荐
gettext 是 GNU Translation Project上的重要一步,从它基础上可以构建其他步骤。 gettext提供了一个帮助产生多语言 message的框架:包括一组关于程序改如何编写以支持 message种类的约定, message种类相关的一个...
script src =" ./bower_components/gettext.js/dist/gettext.js " > </ script >< script src =" ./bower_components/ember-gettext/lib/ember-gettext.js " > </ script > 或者在你的 ...
GetText
有些Linux系统缺少gettext库,需要自己手动编译安装。
前端开源库-angular-gettext-toolsAngular GetText工具,用于提取/编译Angular GetText字符串的工具。
django gettext poedit 国际化 django国际化工具gettext和poedit
Laravel开发-gettext 将php gettext库集成到Laravel4中
#myAwesomeTheme 这是一个简化项目,可简化Wordpress CMS的工作。 ... gettext- //www.npmjs.com/package/node-gettext gutil- //www.npmjs.com/package/gutil 通知-https: runSequence- //ww
NGettext, gnu/gettext库的跨平台. NET 实现 NGettext gnu/gettext库的跨平台. NET 实现。这个完全管理的库在 .NET 版本或者更高版本,甚至在完整aot运行时上收费。 它拥有英镑的com 和符合CLS的。这个实现直接从 ...
GNU Gettext Delphi Demo。功能非常简单,只是验证GNU Gettext 是否可用。请首先安装dxgettext和poedit.
gun gettext for delphi2010, 使用说明: 1,安装dxgettext-1.2.2.exe 2,使用此gun gettext for delphi2010,覆盖安装文件中的内容 3.在delphi2010中的使用步骤 a.在工程中加入gnugettext.pas,b.其它使用方法参考...
gettext源码,安装glib过程中需要用到
Introduction to gettext Usually, programs are written and documented in English, and use English at execution time for interacting with users. This is true not only from within GNU, but also in a ...
这时0.18版本,完全满足django1.4.5对于gettext0.15以上的要求。 非常简单,解压缩文件,然后将文件路径\bin加入到环境变量path中。 这样,在django中就可以用django-admin.py makemessages -l zh_CN生成国际化文件...
gettext 0.17 django国际化工具
python gettext-runtime-0.13.1
Laravel开发-laravel-gettext 简单的getText加载程序和分析器
GNU gettext for windows,0.14.4版本