【发布时间】:2020-10-09 20:22:50
【问题描述】:
我正在尝试弄清楚如何在 Sinatra 中为多线程应用程序根据每个请求设置时区。
Rails 提供 :around_action 过滤器来处理此问题,其中请求在 Time.use_zone 块内处理。
around_action :set_time_zone, if: :current_user
def set_time_zone(&block)
Time.use_zone(current_user.time_zone, &block)
end
然而,Sinatra 只提供前后过滤器:
before do
Time.zone = current_user.time_zone
end
after do
Time.zone = default_time_zone
end
然而,这种方法似乎不是线程安全的。在 Sinatra 中实现此目的的正确方法是什么?
【问题讨论】:
标签: ruby sinatra activesupport