From 4c261a7ff8f2b2af08cc2cdee6828af4a1cf7794 Mon Sep 17 00:00:00 2001 From: Valentin Bartenev Date: Mon, 15 Mar 2021 15:03:32 +0300 Subject: [PATCH] Ruby: fixed encodings initialization. The Ruby interpreter expects an explicit setlocale() call before initialization to pick up character encodings in the "Encoding" class from the environment. This closes #531 issue on GitHub. --- docs/changes.xml | 6 ++++++ src/ruby/nxt_ruby.c | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/docs/changes.xml b/docs/changes.xml index 07decb2a..2f68083d 100644 --- a/docs/changes.xml +++ b/docs/changes.xml @@ -37,6 +37,12 @@ Linux, and all uploaded certificate bundles were forgotten after restart. + + +the Ruby module didn't respect user locale for defaults in the Encoding class. + + + diff --git a/src/ruby/nxt_ruby.c b/src/ruby/nxt_ruby.c index 0aad887d..ca14af5b 100644 --- a/src/ruby/nxt_ruby.c +++ b/src/ruby/nxt_ruby.c @@ -12,6 +12,8 @@ #include NXT_RUBY_MOUNTS_H +#include + #define NXT_RUBY_RACK_API_VERSION_MAJOR 1 #define NXT_RUBY_RACK_API_VERSION_MINOR 3 @@ -200,6 +202,8 @@ nxt_ruby_start(nxt_task_t *task, nxt_process_data_t *data) nxt_ruby_threads = c->threads; + setlocale(LC_CTYPE, ""); + RUBY_INIT_STACK ruby_init(); ruby_options(2, argv);