您将机架中间件文件和要求放在何处?

我正在将Rails应用程序中内置的一些逻辑重构为中间件,我遇到的一个麻烦是,似乎缺少将它们放在何处的约定

目前我已经决定使用应用程序/中间件,但我可以很容易地将其移动到供应商/中间件供应商/插件/中间件

最大的问题是必须在config/environment.rb

需要“应用程序/中间件/系统消息”
需要“应用程序/中间件/后台机架”

否则我会在config.middleware.use行上得到未初始化的常量错误。这很快就会变得一团糟。我宁愿把它藏在某个地方的初始值中

有没有一个传统的地方可以放这些东西


我想从这份赏金中找到的具体答案是:我可以把require行放在哪里,这样它们就不会弄乱environment.rb文件,但仍然会在config.middleware.use调用之前加载?我尝试的所有操作都会导致未初始化的常量错误


更新:现在我们使用的是Rails 3.0,我将Rails应用程序视为其他机架应用程序;中间件的代码文件位于lib(或Gemfile中列出的gem)中,并且是必需的,并加载在config.ru

从Rails 3.2开始,机架中间件属于app/middleware目录

它是“开箱即用”的,没有任何明确的require语句

快速示例:

我正在使用一个名为CanonicalHost的中间件类,它在app/middleware/canonical\u host.rb中实现。我已经在production.rb中添加了以下行(注意中间件类是显式给出的,而不是作为带引号的字符串,它适用于任何特定于环境的配置文件):

config.middleware.use CanonicalHost,“example.com”

如果您要将中间件添加到application.rb,则需要根据@mltsy的评论添加引号

config.middleware.use“CanonicalHost”、“example.com”

发表评论