Разбор по времени Ruby передается на анализ даты, который следует за приоритетом:
_parse_time(str, e) # || _parse_beat(str, e)
_parse_day(str, e)
_parse_eu(str, e) ||
_parse_us(str, e) ||
_parse_iso(str, e) ||
_parse_jis(str, e) ||
_parse_vms(str, e) ||
_parse_sla_us(str, e) ||
_parse_iso2(str, e) ||
_parse_year(str, e) ||
_parse_mon(str, e) ||
_parse_mday(str, e) ||
_parse_ddd(str, e)
т.е. это не выглядит для анализа, учитывая локаль, которую вы передаете. Разбор дат и времени в разных локалях ужасен. Я бы хотел помочь вам, но для анализа входных данных из локали, на которой не работает ваш сервер, я бы побежал в горы (я не могу найти ни одного, Google не мой друг в 1:00).
самый быстрый ответ ... разделить ввод, а не принимать произвольный текст.
Вы можете попробовать установить языковой стандарт ввода для каждого потока запроса, но большинство реализаций linux / unix имеют языковой стандарт для процесса , что означает, что у вас будет условие гонки для разбора строк на даты для каждого запрашивающий поток в вашем приложении rails.
Да, я понимаю, что это, вероятно, не тот ответ, который вы ищете, но, к сожалению, ruby использует стандарт C, который представляет собой колоссальную пару брюк для многопоточных приложений