我发现时间旅行宝石像Timecop,用来测试时间相关的特性。在开发中也可以和/或明智地使用这一点吗?
若否:是否有另一款适合发展的时间游人宝石?我找不到一个。
发布于 2015-08-20 23:41:36
是的你当然可以。下面是我构建的一个应用程序中的一些示例代码,您可以在这个应用程序中通过管理区域设置日期,然后在会话期间浏览站点,就好像是该日期一样:
在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] --我是通过我的管理区域中的一个页面上的一个表单来实现的,但是您可以任意设置它。返回到当前时间就像删除该会话键一样简单。
https://stackoverflow.com/questions/32129741
复制相似问题