2017-06-01 56 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或類似的東西。 –

相關問題