我查看了一些答案 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/