Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails向运行的Rails环境添加翻译_Ruby On Rails_Ruby On Rails 5_Rails I18n_Rails Console_I18n Gem - Fatal编程技术网

Ruby on rails Rails向运行的Rails环境添加翻译

Ruby on rails Rails向运行的Rails环境添加翻译,ruby-on-rails,ruby-on-rails-5,rails-i18n,rails-console,i18n-gem,Ruby On Rails,Ruby On Rails 5,Rails I18n,Rails Console,I18n Gem,有没有办法通过Rails控制台手动注入翻译 假设我在开发环境中工作,我想在生产控制台中测试一些代码(例如测试一些真实数据的统计数据)。问题是,我想测试的代码依赖于生产环境中不存在(或已更改)的新翻译 因此,我的代码返回了大量缺少的翻译 我可以插入缺少的翻译吗?通过散列还是YML文件 I18n.load_translations(hash_or_file) 通常,服务http请求(例如在Unicorn/Puma下运行)的应用程序实例不能通过Rails控制台使用。当有人登录到生产服务器并键入$R

有没有办法通过Rails控制台手动注入翻译

假设我在开发环境中工作,我想在生产控制台中测试一些代码(例如测试一些真实数据的统计数据)。问题是,我想测试的代码依赖于生产环境中不存在(或已更改)的新翻译

因此,我的代码返回了大量缺少的
翻译

我可以插入缺少的翻译吗?通过散列还是YML文件

I18n.load_translations(hash_or_file) 

通常,服务http请求(例如在Unicorn/Puma下运行)的应用程序实例不能通过Rails控制台使用。当有人登录到生产服务器并键入
$RAILS\u ENV=production RAILS c
时,它将启动另一个应用程序进程。翻译字典是一种内存缓存,通常不可能为另一个进程(通常)更改该缓存。您只能为Rails控制台启动的应用程序实例重新加载翻译,但不能为运行的服务器重新加载翻译

热重新加载翻译的唯一方法是在应用程序的源代码中添加一种钩子来重新读取YAML文件,但重启应用程序服务器似乎更好

更新:出于测试目的,I18n缓存可以修改如下:

I18n.backend.send(:translations)[:en][:date][:formats][:default] = "%Y-%Z"

谢谢,我不是在说运行中的服务器上的实时修改,而是在rails控制台中。你的更新行覆盖了它。