gpt4 book ai didi

ruby-on-rails - 在 Rails4.1 中放置 Rack 中间件的位置

转载 作者:行者123 更新时间:2023-12-04 07:38:18 24 4
gpt4 key购买 nike

我查看了一些答案 1] 包含在 qoutes 中,2] 不要使用 require 等,但它们都不起作用。 Rails4 中的解决方案可能发生了变化

我正在尝试按照这里的教程 https://devcenter.heroku.com/articles/ruby-websockets#using-with-rails

它说
将现有的 ChatBackend 中间件复制到 Rails 项目中的 app/middleware/chat_backend.rb。然后将中间件插入到您的堆栈中,在 config/application.rb 中定义:

require 'chat_backend'
config.middleware.use ChatDemo::ChatBackend

我在 app/middlewares/chat_backend.rb 中定义了中间件,如下所示:
require 'faye/websocket'
require 'thread'
require 'redis'
require 'json'
require 'erb'

module ChatDemo
class ChatBackend
KEEPALIVE_TIME = 15 # in seconds
CHANNEL = 'twitter-stream'
def initialize(app)
end
/// DELETED CODE for simplicity
end

这是应用程序.rb
require File.expand_path('../boot', __FILE__)

require 'rails/all'
require 'chat_backend' <= ERROR: config/application.rb:4:in `require': cannot load such file -- chat_backend (LoadError)

Bundler.require(*Rails.groups)

module MyProject
class Application < Rails::Application

config.middleware.use ChatDemo::ChatBackend
end
end

我究竟如何添加中间件。欣赏任何确切的代码示例。

最佳答案

通常 Rack 中间件通过在 config/application.rb 中声明来插入到 Rails 应用程序中。 .您可能需要 require 'something'在该文件的标题中,然后在应用程序配置 block 中,config.middleware.use Rack::MiddlewareName如下图所示。

如果中间件来自 gem,您的 Gemfile 可能会 require它会自动使require行可能是多余的。

require 'bouncy_module'

module Coachpage
class Application < Rails::Application
config.i18n.enforce_available_locales = true
# other config options

config.middleware.use Rack::Bouncy
end
end

关于ruby-on-rails - 在 Rails4.1 中放置 Rack 中间件的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31768362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com