首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >升级到Rails 4后,在Rack::Lock (RuntimeError)之前没有要插入的中间件

升级到Rails 4后,在Rack::Lock (RuntimeError)之前没有要插入的中间件
EN

Stack Overflow用户
提问于 2013-06-16 16:12:46
回答 1查看 7.8K关注 0票数 21

在升级到Rails 4之后,我得到了以下错误:

.../ruby-1.9.3-p125/gems/actionpack-4.0.0.rc2/lib/action_dispatch/middleware/stack.rb:125:in 'assert_index': No such middleware to insert before: Rack::Lock (RuntimeError)

令人不快的一行是我的"remove slashes“机架重写规则:

代码语言:javascript
复制
config.middleware.insert_before(Rack::Lock, Rack::Rewrite) do
  r301 %r{^/(.*)/$}, '/$1', :headers => {'Cache-Control' => 'public, max-age='+2.week.to_s}
end

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-16 16:12:46

正如错误所暗示的(“在此之前没有这样的中间件要插入”),问题出在您试图在之前插入的中间件(而不是您试图插入的中间件,这是我最初的假设)。

在Rails4中,线程化在默认情况下是启用的,这会删除Rack::Lock

要找到替代方法,可以从rails项目目录中运行rake middleware,然后查找堆栈开头附近的内容。我将选择Rack::Runtime,因为它在堆栈中处于早期阶段,而且看起来很标准。

因此,重写配置现在是:

代码语言:javascript
复制
config.middleware.insert_before(Rack::Runtime, Rack::Rewrite) do
  r301 %r{^/(.*)/$}, '/$1', :headers => {'Cache-Control' => 'public, max-age='+2.week.to_s}
end
票数 42
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17131366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档