Как ограничить разрешение Rails DateTime микросекундами? - PullRequest
2 голосов
/ 11 апреля 2019

Rails поддерживает DateTime с разрешением наносекунд, но я заметил, что это зависит от машины, на которой выполняется приложение.

На моем MacBook, работающем в режиме Mojave, Time.zone.now.strftime("%N") всегда будет выводить 9-значныйчисло, которое заканчивается на 000, (например, "122981000").Это означает, что на Mac разрешение ограничено микросекундной шкалой.

Однако в Linux эта же команда возвращает число с полным разрешением наносекунд (например, "113578523").

Моя проблема возникает, когда я использую rspec и мне нужно сравнить некоторые значения DateTime.
Когда я работаю на моем Mac, тесты проходят без нареканий, но потом, когда наш CI (Travis) будет работатьтот же тест, он проваливается примерно так:

       expected: 2019-04-09 19:14:27.214939637 -0300
            got: 2019-04-09 19:14:27.214939000 -0300

Проблема здесь в том, что наша база данных Postgres ограничена микросекундами, как и мой Mac, где она не дает сбой.Я храню DateTime в БД, затем читаю его обратно и сравниваю с тем, что у меня в памяти.DB округляется до микросекунд, и поэтому сравнение не удается.

Можно ли заставить Rails работать с точностью до микросекунд?
Мое намерение состоит в том, чтобы не нужно вручную округлять или урезать временные метки в каждом тесте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...