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
- 浏览 1339
- 评论(0)
- 论坛回复 / 浏览 (0 / 1569)
- 查看更多
相关推荐
gettext 是 GNU Translation Project上的重要一步,从它基础上可以构建其他步骤。 gettext提供了一个帮助产生多语言 message的框架:包括一组关于程序改如何编写以支持 message种类的约定, message种类相关的一个...
`gettext`是一个在开源软件开发中广泛使用的工具集,主要用于多语言环境下的文本翻译。它提供了从源代码中提取可翻译字符串,管理翻译文件,以及最终将这些翻译整合回二进制可执行文件的功能。在Linux系统中,`...
这里主要介绍两种关键工具:gettext和Poedit,它们在Django国际化过程中起着至关重要的作用。 **1. Gettext** Gettext是Unix/Linux系统下广泛使用的文本翻译工具,它可以帮助开发者将应用程序中的字符串提取出来,...
script src =" ./bower_components/gettext.js/dist/gettext.js " > </ script >< script src =" ./bower_components/ember-gettext/lib/ember-gettext.js " > </ script > 或者在你的 ...
composer require maatwebsite/gettext ``` 安装完成后,我们需要配置Laravel的`config/app.php`文件,将`Gettext`服务提供者和 Facade 添加到相应的数组中: ```php // 在providers数组中添加服务提供者 ...
gettext源码,安装glib过程中需要用到
DELPHI GETTEXT源代码是面向Delphi开发者的一个多语言支持解决方案。GETTEXT是一个广泛用于C和C++等编程语言的国际化(i18n)和本地化(l10n)工具,但同样可以被引入到Delphi项目中,以实现更灵活的多语言功能。在...
而`gettext`则是Linux/Unix环境中广泛使用的国际化(i18n)和本地化(l10n)工具,用于处理多语言支持。将Smarty与gettext结合,可以方便地在PHP应用中实现多语言功能。 Smarty_gettext是Smarty模板引擎的一个扩展...
- 配置`config/gettext.php`,设置语言目录、默认语言等参数。 - 运行命令`php artisan vendor:publish --provider="Mcamara\LaravelLocalization\LaravelLocalizationServiceProvider"`来发布配置文件和语言文件...
4. **内存管理**:确保你正确地处理了分配的内存,尤其是当你使用动态内存分配时。 在这个特定的例子中,由于提到了"GetText"和"GetTextDlg",我们可以推断这可能是一个简单的对话框应用程序,通过一个对话框控件来...
`gettext-0.18.1.1.tar.zip` 是一个包含了 `gettext` 工具的源代码包,主要用于在Linux系统中进行多语言支持。`gettext` 是一个广泛使用的软件开发工具集,它提供了强大的国际化(i18n)和本地化(l10n)功能,使得...
`gettext`是一个广泛使用的工具集合,用于处理软件的国际化(i18n)和本地化(l10n)问题。这个"gettext-0.14.4-二进制版本"是`gettext`工具的一个特定发行版,适用于处理和管理多语言环境中的文本资源。在IT领域,...
"gettext-runtime-0.13.1" 是一个与Python相关的库,主要用于处理软件本地化(internationalization)和翻译(localization),也就是我们常说的i18n和l10n。这个版本号0.13.1表示这是该库的一个特定发行版,可能...
《GNU Gettext for Delphi 2010 演示项目详解》 GNU Gettext 是一个广泛使用的开源工具集,主要用于多语言环境下的软件国际化(i18n)和本地化(l10n)。它提供了一种方便的方式来管理和翻译软件中的字符串,使得...
`gettext-0.19.3.tar` 是一个包含了 `gettext` 工具集源代码的压缩文件。`gettext` 是一个广泛使用的开源工具,主要用于软件的国际化(i18n,Internationalization)和本地化(l10n,Localization)。这个版本号表示...
Angular GetText工具,简称`angular-gettext-tools`,是前端开发中一个非常重要的开源库,专门针对Angular框架设计,旨在帮助开发者方便地提取、管理和编译应用中的国际化(i18n)文本。在多语言环境中,提供良好的...
`gettext-static-0.19.8.1` 是一个针对Java后端国际化支持的工具包,主要用于帮助开发者从Java源代码中提取需要翻译的文本并编译为项目所需的类文件。这个工具集包含了`gettext`工具的静态库版本,`gettext`是一个...
2. **构建文件**:编译后的`dist/gettext.min.js`,这是经过压缩和优化的版本,适合在生产环境中使用。 3. **示例**:可能有`examples`目录,包含如何在实际项目中使用`gettext.js`的示例代码。 4. **测试**:`test`...