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

标签 ruby-on-rails heroku rack ruby-on-rails-4.1 rack-middleware

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

相关文章:

ruby-on-rails - 通过关联从具有多个关联中获取第一个关联

heroku - 在 Heroku 上运行 Flask cli 命令

ruby - 精简读取已配置的用户环境

ruby - 对Rack源码中的变量类型感到困惑

node.js - npm 安装失败 - make 失败

ruby-on-rails - apache 上的 redmine 找不到 Rack

ruby-on-rails - 如何使外键与sqlite3和Ruby on Rails连接

ruby-on-rails - 为什么我会收到从 ASCII-8BIT 到 UTF-8 的字符串编码问题 "\xE2"?

ruby-on-rails - Rails 4 渲染 json 嵌套对象

postgresql - 使用 Postgresql 和 Flask-SQLAlchemy 提高 COUNT(*) WHERE 的数据库性能