Ruby on rails 您可以使用Timecop gem在Rails中进行开发吗?
我找到了时间旅行的宝石,比如Timecop,来测试与时间相关的特性。在开发过程中也使用这种方法是否可行和/或合理Ruby on rails 您可以使用Timecop gem在Rails中进行开发吗?,ruby-on-rails,gem,Ruby On Rails,Gem,我找到了时间旅行的宝石,比如Timecop,来测试与时间相关的特性。在开发过程中也使用这种方法是否可行和/或合理 如果没有:是否还有另一种适合开发的时间旅行者宝石?我找不到 是的,当然可以。下面是我构建的应用程序的一些示例代码,在该应用程序中,您可以通过管理区域设置日期,然后在会话期间浏览站点,就好像它是该日期一样: 应用程序内/controllers/concerns/time_travel_filters.rb: 然后你只需要在你想要使用的控制器中加入TimeTravelFilters 您需
如果没有:是否还有另一种适合开发的时间旅行者宝石?我找不到 是的,当然可以。下面是我构建的应用程序的一些示例代码,在该应用程序中,您可以通过管理区域设置日期,然后在会话期间浏览站点,就好像它是该日期一样: 应用程序内/controllers/concerns/time_travel_filters.rb: 然后你只需要在你想要使用的控制器中加入TimeTravelFilters
您需要设置会话[:timecop_date]以使其生效-我通过我的管理区域页面上的表单来执行此操作,但您可以根据需要执行此操作。返回到当前时间就像删除会话密钥一样简单。在Rails 5+上仍然有效,但您必须使用around_操作,而不是around_筛选器。我用您的解决方案和UI创建了一个gem,让用户可以进行时间旅行
# 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