2017-06-01 54 views
0

我的应用程序使用了很多时间特定的逻辑和模型。在开发中,我会经常更改机器的时间,以便更轻松地测试和开发我的应用程序。但是,这有些退步(例如,互联网部分停止工作)。可以覆盖Rails开发模式中的当前时间吗?

有什么方法可以覆盖我的Rails应用程序的'当前'时间是什么?我不打算改变应用程序的时区。我也不打算覆盖或包装各种Time方法的访问器。最后,我不打算在应用程序中混淆测试(这些测试已经包含在各种timecop助手等等中)。

例如,如果我可以设置时间偏移量,那就太棒了。所以,如果是美国东部时间下午5点,告诉我的导轨应用程序,当前时间实际上比真实时间少90分钟。所以如果是美国东部时间下午5点,我的应用程序将阅读美国东部时间下午3:30。

这可能不太可能,但是这会让我的团队的生活变得更加轻松。

回答

0

time interfaces in Ruby正在调用低级C API,如localtimegmtime,所以没有。你将不得不使用Timecop之类的东西,或者在虚拟机中运行它。

+0

虚拟机是一个很好的建议,正是我所做的。我在Docker容器中设置了我的rails应用程序,并使用![libfaketime](https://github.com/wolfcw/libfaketime)来覆盖时间。 – chrismanderson

+0

可悲的是,这并没有结束工作,libfaketime与Ruby一起使用时会导致段错误。 :( – chrismanderson

+0

@chrismanderson我对libfaketime并不熟悉,但我不希望Docker有足够的虚拟化来取得成功,您需要更多类似VirtualBox或类似的东西。 –

相关问题