簡體   English   中英

您可以使用Timecop gem在Rails中進行開發嗎?

[英]Can you use Timecop gem for development In Rails?

我發現像Timecop這樣的時光旅行寶石可以測試與時間相關的功能。 開發中也可以使用它嗎?

如果不是:還有另一個適合發展的旅行者寶石嗎? 我找不到一個。

是的,可以。 這是我構建的應用程序中的一些示例代碼,您可以在其中通過管理區域設置日期,然后在會話期間像瀏覽該日期一樣瀏覽網站:

app/controllers/concerns/time_travel_filters.rb

# This allows us to set a different date
# in the admin area, and use TimeCop to process each
# request as being on that different date - useful for
# testing different phases of the challenge.
module TimeTravelFilters
  extend ActiveSupport::Concern

  included do
    if Rails.env.development? || Rails.env.staging?
      around_filter :time_travel_for_request
    end
  end

  def time_travel_for_request
    time_travel
    yield
    time_travel_return
  end

  def time_travel
    logger.info 'TIME TRAVEL START'
    if session[:timecop_date]
      Timecop.travel(session[:timecop_date])
    else
      Timecop.return
    end
  end

  def time_travel_return
    logger.info 'TIME TRAVEL RETURN'
    Timecop.return
  end
end

然后您只需要在要使用它的控制器中include TimeTravelFilters

您需要設置session[:timecop_date]才能生效-我通過管理區域頁面上的表單來執行此操作,但是您可以根據需要進行設置。 返回當前時間就像刪除該會話密鑰一樣簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM