42得票8回答
如何确定Rails是从命令行界面、控制台还是作为服务器运行的?

我有一个用 Bonjour 在本地网络应用程序上宣布我的应用程序的中间件(RackJour),但是当通过 rake 或控制台调用 Rails 时,它也会宣布服务。 我想排除这些情况,并且只在 Rails 作为服务器运行时使用 Bonjour 中间件。 中间件配置接受一个 proc 来排除某...

27得票4回答
使用Rspec测试中间件

我编写了一些Rack中间件,现在我想用Rspec来测试它。但是所有的Rack中间件都需要通过一个'app'参数进行实例化,该参数表示Rails应用程序本身。你们如何在Rspec中模拟这个参数? 例如, describe MyMiddleWare do let(:app) { # Ho...

21得票5回答
当提到Ruby on Rails时,什么是中间件?

在Ruby on Rails的语境中,我经常听到“中间件”这个术语。它到底是什么?能否提供具体的例子?

21得票1回答
在Ruby/Rails/Rack代码中使用"use"关键词/单词

最近我在查看一些与goliath、中间件等相关的代码时,偶然发现Ruby代码中出现了use这个词。它似乎不同于include/extend和require。 能否有人解释一下这个use关键字存在的原因,以及它与include/require的区别?它是如何工作的,什么时候使用它?

20得票4回答
在Rails 4中添加自定义中间件

我有一个Rails 4示例项目(Blog),我创建了一个名为'request_timer'的简单中间件,放在config/initializers/request_timer.rb中。 #config/initializers/request_timer.rb class Reque...

16得票2回答
如何在Rails 5中拯救ActionDispatch :: ParamsParser :: ParseError并返回自定义API错误?

每当向我的基于API的Rails 5.x应用程序发送格式不正确的JSON时,我都会收到一个异常,并且Rails将整个堆栈跟踪返回为JSON。显然,我希望以漂亮、自定义、格式化的错误响应。 每当对我的基于API的Rails 5.x应用程序发送格式不正确的JSON时,我会收到一个异常,并且Ra...

15得票1回答
如何在引擎中使用来自另一个引擎的中间件

因为在我的系统中,各种宝石(gem)的相互作用,我需要将引擎(engine)安装到Rails应用程序上。我最近开始开发一个新的宝石(gem),提供了一些中间件功能。 有点像这样:BaseApp \ Engine \ NewMiddlewareEngine # BaseApp/...

12得票4回答
在开发中重新加载Rails中间件而不需要重启服务器

我有一个Rails 4应用程序,其中中间件位于lib/some/middleware.rb,目前通过初始化程序注入到堆栈中,如下所示:MyApp::Application.configure.do |config| config.middleware.use 'Some::Middle...

11得票2回答
RoR - 哪种更好- Rack中间件还是Active Controller过滤器?

针对最新版本的 Ruby on Rails(在提问时为 4),实现修改请求/响应的代码,例如身份验证机制,有什么首选方法?我看到很多网站和教程都推荐使用Rack 中间件,但好像可以通过Action Controller 过滤器方法实现相同功能。 除了讨论首选方法外,还能否提供每种方法的优缺点...

10得票1回答
在 Rack 中间件中修改 response.body

我正在尝试为Rails 4.2应用程序编写一些Rack中间件,使用gsub方法更改响应正文。我找到了一些旧的示例,它们使用以下类似的模式: class MyMiddleware def initialize(app) @app = app end def call(en...