问题标签 [rack-middleware]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Ruby/Rails/Rack 代码中的“使用”关键字/词
最近碰巧在 Ruby 代码中看到了这个词use
,当时我正在浏览一些与goliath、中间件等相关的代码。看起来它与include
/extend
和. 不同require
。
有人可以解释为什么这个use
关键字存在,以及它与include
/有何不同require
?它是如何工作的,何时使用?
ruby-on-rails - 获取机架错误 Rack::Lint::LintError: Status must be >=100 seen as integer
我正在尝试构建基于机架的 ruby 应用程序,但我还是新手,我正在使用 ruby 1.9.2 -p180
在我的 config.ru 文件中,我有:
现在中间件身份验证的主要问题,简单地说,如果请求的参数少于 2 个,我希望它不要继续 MyApp 并且只打印出一些东西(仅用于测试):
现在当我运行我的机架应用程序时:
并尝试得到结果:
我不断收到以下错误:
当然,如果我以生产模式运行它,我将不会收到此错误。
任何帮助将不胜感激。
ruby-on-rails - 与 Rack 应用程序共享会话/哈希
我对 Rack 很陌生,我正在玩它,我很想在我所有的机架应用程序中分享一些会话或哈希表,
假设我有以下 config.ru
我希望Auth检查内存中的user_id,如果是第一次请求,则从db中获取数据,下次具有相同id的请求不会触发User.find,我不介意任何类型的实现像共享哈希或任何东西,但对于这个例子,我使用了会话 [],我非常感谢它给我任何关于如何使事情工作的提示,我不是在这里寻找真正的身份验证,而不是在这么多的人之间共享一个密钥红宝石工艺。
假设我将在 nginx 下运行 10 个瘦机架实例,所以我希望与所有进程共享会话/哈希。
ruby-on-rails - 将非 www 重写为 www,除了子域 rails 3 和 rack
我需要能够将非 www 重写为 www 但不是在存在(非 www)子域的情况下。
所以 example.com 到-> www.example.com 但 sub.example.com 仍然是 sub.example.com
我在 rails 3 中,这似乎应该使用 Rack Middleware 来完成,但问题是这是一个多租户应用程序,因此 TLD 可能是任何域。
这是我到目前为止的位置:
任何指针将不胜感激....
ruby-on-rails - 如何确定 Rails 是从 CLI、控制台还是作为服务器运行?
我有一个中间件,用于使用 Bonjour 在本地网络应用程序上宣布我的应用程序,但是当从 rake 或通过控制台调用 Rails 时,它也会宣布服务。
我想排除这些情况,只在 Rails 作为服务器运行时使用 Bonjour 中间件。
中间件配置接受 proc 在某些条件下使用 proc 排除中间件proc
:
但是如何确定 Rails 是从 CLI、控制台还是作为服务器调用的呢?
ruby-on-rails - 在 Rails 中按需禁用/启用日志的智能方法
我正在 Heroku Cedar 堆栈上运行 Rails 应用程序(v 3.1.10),由于日志的大小,Papertrail 附加组件变得疯狂。
我的应用程序非常冗长,日志变得越来越大(非常大):
有时是因为我在一个字段中序列化了大量数据,这会产生巨大的 SQL 请求。在我的模型中,我有很多:
感谢我的 AS3 Flash 应用程序与大量的 json 一起工作......
有时因为要渲染很多部分:
这不是大问题,但我也添加了这个案例,因为 Jamiew 处理它,见下文......
有时因为同一页面上有很多 sql 查询:
这是一个大(太)复杂的应用程序,我们在这里......是的......
有时因为有很多参数:
AS3 Flash 应用程序将大 json 数据发送到控制器...
我没有提到(臭名昭著的)“资产管道日志记录问题”,因为现在我正在使用 quiet_assets gem 来处理这个问题:
https ://github.com/evrone/quiet_assets
那么......我尝试了什么?
1:Dennis Reimann 的中间件解决方案:
http://dennisreimann.de/blog/silencing-the-rails-log-on-a-per-action-basis/
2:Spagalocco 的宝石(灵感来自解决方案 #1):
https ://github.com/spagalloco/silencer
3:jamiew 的猴子补丁(灵感来自解决方案 #1 + 奖金):
https ://gist.github.com/1558325
没有什么能真正按预期工作,但它正在接近。
我宁愿在我的 ApplicationController 中使用这样的方法:
...并在任何控制器方法中调用它:custom_logging({:remove_sql_requests=>1, :remove_rendered=>1})
你明白了。
那么,网上有什么好的资源来处理这个问题吗?非常感谢您的建议...
ruby-on-rails-3 - 为什么 rspec-rails 跳过中间件?
我有一个 Rails 应用程序 (3.2.12),我想通过 HTTP Accept-Language 标头添加区域设置切换。
我为实现这一目标所做的工作:
我将 rack-contrib 添加到我的 Gemfile 中:
运行bundle install
,将中间件添加到我的config/application.rb
:
并检查我的控制器的请求环境:
我运行的规范是一个控制器规范,它包含render_views
在其中。
我的问题:
请求环境中没有rack.locale
密钥。我仔细检查了rake middlware
,它在最后列出Rack::Locale
,就在之前run MyApp::Application.routes
。
经过一些调试后,我发现运行时从未调用过中间件
但是:在请求环境中运行相同的代码script/rails s thin
会给我更多的键,即:
所以,我想问题是:为什么 RSpec 拒绝选择 Rack 中间件?
ruby-on-rails - ActiveAdmin:如何设置 HTTP 基本身份验证?
我想为 ActiveAdmin 设置基本身份验证,该内部设计解决方案不适用于我的情况。为此,我希望能够在将中间件捆绑到我的应用程序之前将中间件添加到 ActiveAdmin 引擎。我设法做的是:
但显然这并不能使它起作用,因为我的活动管理路由仍然不受保护。我怎样才能有效地做到这一点?不,我不想通过基本身份验证来保护我的整个网站。
ruby-on-rails - 中间件中@env 哈希中的变量 HTTP_X_FORWARDED_HOST 是什么?
在 Rack 中间件过滤器中,我知道 call 方法需要一个 env 哈希变量。我正在查看某人的 Rack 中间件代码,我看到了
有人可以解释 HTTP_X_FORWARDED_HOST 是什么意思吗?是发起请求的主机吗?
ruby-on-rails - 如何使用 Rack 中间件同时设置 cookie 并发送有效 cookie 的响应
我正在尝试使用 Rack Middleware 设置 cookie 并在相同的请求 - 响应周期中发送有效 cookie 的响应。
这里是上下文:我在一个有两种模式的网站上工作:美国模式和英国模式(不同的标志、导航栏、样式等)。当英国访问者第一次访问该页面时,我想在他的浏览器上设置一个“英国模式”cookie,但同时也呈现该页面的英国版本。到目前为止,这是我的代码:
当英国访问者第一次访问该页面时,它会在他们的 cookie 中设置“英国模式”,但仍会呈现页面的默认美国版本。只有在第二次请求之后 cookie 才会生效并且英国访问者会看到英国模式。
有谁知道在一个请求-响应周期中同时设置 cookie 并返回有效 cookie 的响应?