gpt4 book ai didi

ruby-on-rails - 您将 Rack 中间件文件和需求放在哪里?

转载 作者:行者123 更新时间:2023-12-03 07:01:03 27 4
gpt4 key购买 nike

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

目前我已经决定 app/middleware但我可以轻松地将其移至 vendor/middleware或者也许vendor/plugins/middleware ...

最大的问题是必须需要config/environment.rb顶部的各个文件。

require "app/middleware/system_message"
require "app/middleware/rack_backstage"

否则我会在 config.middleware.use 上收到未初始化的常量错误线。这很快就会变得困惑。我宁愿将其隐藏在某个初始化程序中。

有传统的地方可以放这些东西吗?

<小时/>

我在这个赏金中寻找的具体答案是:我可以将 require 行放在哪里,这样它们就不会弄乱environment.rb 文件,但仍然可以在 config.middleware.use 调用之前加载? 我尝试过的所有方法都会导致未初始化的持续错误。

<小时/>

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

最佳答案

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

它“开箱即用”,无需任何明确的 require 语句。

简单示例:

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

config.middleware.use CanonicalHost, "example.com"

如果您要向 application.rb 添加中间件,则需要包含引号,如 @mltsy's comment 所示。 .

config.middleware.use "CanonicalHost", "example.com"

关于ruby-on-rails - 您将 Rack 中间件文件和需求放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3428343/

27 4 0