百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
R

request_store

> 编程语言
开源

为 Rack 提供按请求的全局存储。

1.5K stars0 点赞1 次浏览
访问官网GitHub

工具介绍

为 Rack 提供按请求的全局存储。

RequestStore()](https://github.com/steveklabnik/request_store/actions/workflows/ci.yml)

你是否曾需要在 Rails 中使用全局变量? 糟透了,这是最糟糕的情况。如果你 如果需要全局状态,您可能会使用 Thread.current。例如:

ruby
def self.foo
  Thread.current[:foo] ||= 0
end

def self.foo=(value)
  Thread.current[:foo] = value
end

噗! 我讨厌它。但你必须做你必须做的事 ...

问题

现在每个人都在担心并发问题。所以人们都在使用这些工具。 例如 Thin 或 Puma 等带有线程的 Web 服务器。但是如果您使用 Thread.current, 如果您使用其中一个服务器,请小心! 值可能会保留更长时间 比你所预期的要多,这可能会导致错误。例如,如果我们有这个代码 我们的控制器:

ruby
def index
  Thread.current[:counter] ||= 0
  Thread.current[:counter] += 1

  render :text => Thread.current[:counter]
end

如果我们在 Webrick 上运行此程序,每次运行时都会得到 1 作为输出。但是如果您使用 Thin 运行它,则会先得到 1,然后是 2,然后是 3…

该 gem 包含一个 Railtie,它会为 Rails 3+ 应用程序正确配置一切,但如果您的应用程序绑定到旧版本(2.x),则您必须手动添加中间件。通常,只需将以下内容添加到 config/environment.rb 中:

Issues· 9 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Ruby

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言