问题标签 [rack]

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.

0 投票
1 回答
105 浏览

ruby-on-rails - rails 2.3 的机架支持有什么影响?

现在它使用 rack 与 Web 服务器通信,在开发 Rails 应用程序方面有什么不同吗?我们是否应该采取不同的措施来利用它?它只是更干净还是比 cgi 实现有任何性能改进?

0 投票
2 回答
743 浏览

ruby-on-rails - 如何在 Cucumber 步骤中获取从 Rack 返回的响应?

我的 Rails 应用程序有一个 Cucumber 步骤:

但是该@response对象是 my 返回的对象Controller,它是 Rack 中间件将状态设置为我期望的状态。如何获得从最外层中间件返回的响应,而不是从控制器返回的响应?

0 投票
1 回答
843 浏览

ruby-on-rails - rack-jsonp 不适用于简单的请求,但适用于 Rails 2.3 中的 .js 调用

我正在使用 Rails 2.3,我决定为 JSONP 提供支持。创建了一个全新的应用程序。然后运行脚本/生成脚手架用户名:字符串

这是我的整个环境.rb

当我访问 localhost:3000/users 时,我得到的只是一个哈希值。当我访问 localhost:3000/users.js?callback=show 时,我得到了很好的结果。

让我们看一下jsonp代码。我不明白为什么响应被包装在一个数组中。

我创建了另一个 Rack 中间件,我替换了这个语句

有了这个声明

现在一切正常。

我拒绝相信这是 rack-contrib 中的一个错误。

有人可以告诉我为什么响应被包装在一个数组中,以及我如何在我的应用程序中使用 rack-contrib。

我的应用程序的完整源代码在这里。只需克隆它并在 localhost:3000 上运行。

0 投票
2 回答
476 浏览

ruby-on-rails - Ruby On Rails 本身是 Rack 应用程序吗?

所以我从 Rack 文档中推断出来,但也许我错了......

0 投票
1 回答
1755 浏览

ruby - 使用 Ruby 进行电子邮件验证和身份验证的用户注册

我正在尝试在 Sinatra 中制作一个 Web 应用程序,我想知道是否有一个很好的解决方案,用于用户注册与电子邮件验证以及身份验证 - 也许作为机架中间件?OpenID 支持也很不错。

我想我可以自己动手,但我不想重新发明轮子。如果我必须这样做,谁能指出我可能想要使用的库,甚至是示例代码?我还担心我最终可能会忘记通过注册/身份验证来实现一些重要的事情,因为我以前从未这样做过。

如果我需要一个自制的解决方案,我发现bcrypt-ruby用于密码加密和Sinatra::MailerPony用于电子邮件。对于使用 OpenID 支持登录,有hancockhancock-client,尽管我对用法并不完全清楚,而且我实际上并不需要单点登录支持。也许我应该只使用ruby​​ openid 库?我还需要什么吗?

这是一个非常混乱的问题,但我希望更有经验的人能指出我正确的方向。

0 投票
3 回答
4569 浏览

ruby-on-rails - 在 Rails XML 请求中将方法设置为 PUT

如果我这样做:

我得到“只允许获取、放置和删除请求”。为什么?导轨 2.3.2

0 投票
1 回答
996 浏览

ruby-on-rails - 当我尝试在 Ruby 1.9 上上传文件(使用回形针)时,Rails 的 Rack 失败

我有一个 Ruby on Rails 应用程序我正在使用 Ruby 1.9 和 Rails 2.3.4,我希望用户上传视频,所以我安装了 Paperclip gem,但我从 Rack 收到了这个错误。它说它是“无效的字节序列”的事实让我怀疑它来自 Ruby 1.9。

有任何想法吗?

谢谢,

表格:

e>

0 投票
1 回答
1109 浏览

sinatra - 如何为带有乘客的 Sinatra 应用程序配置 VirtualHost?

我在Passenger 上运行了一个Rails 应用程序,一切正常。

我想添加一个 Sinatra 应用程序作为 Rack 应用程序与乘客一起运行,但我收到一个路由错误。

我的 VirtualHosts 文件如下所示:

我的 Sinatra 应用程序非常简单;我有一条get "/do_something" do ....没有公共文件的路线。它只响应一些 JSON。

我怎样才能让它做类似的请求www.sub.domain2.com/do_something

0 投票
4 回答
1103 浏览

ruby-on-rails - 发布一个大的身体会使我们的堆栈崩溃——但只在生产模式下?

我们的 Rails 应用程序有两个部署到服务器的环境,一个是暂存环境,另一个是默认的生产环境。

staging.rb 文件是 config/environments 文件夹中的 production.rb 的副本。两者的区别在于 whiny nils 设置为 true:

由于 Rails 应用程序主要用于它的 API,因此我们在我们的一个内部临时服务器上运行它以供开发人员使用。这行得通,顺利进行了近 4 个月。当需要转移到我们的生产服务器时,每当 POST 或 PUT 带有很大(有时非常非常大)的主体时,堆栈就会开始持续崩溃。在两台服务器之间进行测试时,登台服务器完美地处理了相同的请求。

崩溃/挂起中最令人沮丧的部分是缺少日志或追踪堆栈中发生崩溃的位置(nginx、phusion 乘客、ruby 1.9 补丁级别 243、rails 2.3.4)。nginx 错误日志、rails 日志或我们能找到的任何地方都没有出现任何内容。由于我们使用更新版本的 nginx、passenger 和 ruby​​ 运行生产服务器(补丁级别高于 staging,但仍然是 1.9),我们开始一次恢复每个组件,甚至转移所有可执行文件和支持文件(基本上我们在 /usr/local 中安装的所有内容)到生产机器无济于事。就在我们即将擦拭机器并再次尝试每一步时,有人建议将生产机器切换到“暂存”环境。. . 就像魔术一样,问题解决了!

想知道可能导致错误的原因,我们开始梳理 Rails 核心、我们自己的代码和我们所有的插件,寻找一些线索,了解是什么可能导致生产环境中出现如此大规模的挂起/崩溃,一次再次无济于事。

我能找到的唯一线索是行为。当测试“on”应用程序(rails 应用程序实际提供的页面之一)时,我会通过发送请求使应用程序崩溃,然后在频繁刷新(通常是 3-4 次)后,我将能够从Nginx 日志,最终应用程序将再次开始处理请求。错误如下:

通常当出现字符编码错误时,我的第一轮是 ruby​​ 1.9 。. . 但是,从我的测试中您可以看出,两台机器上的版本相同!

毕竟,我想我想知道。. . 有人知道发生了什么吗?显然,我们暂时可以在 staging 中运行我们的应用程序,但我担心我可能发现了一些更深层次的问题需要解决。关于我应该寻找发生这种情况的下一个地方有什么想法吗?

我们的设置:Mac OS X 服务器:10.6.1、
Rails 2.3.4、
Ruby 1.9p243、
Nginx 0.8.17、
Passenger 2.2.5

我们需要的宝石:
environment.rb
守护进程
rmagick
test.rb
rspec
rspec-rails
factory-girl
rack-test

我们安装的插件:
acts-as-dag(用于创建有向无环图的活动记录插件)
daemon_generator
globalize2
no-peeping-toms(用于测试)
thinking-sphinx


更新(响应 khellll):

我试图将 config.whiny_nils = true 添加到生产环境,但是仍然发生崩溃。

另外,我回到我们的登台服务器并将环境设置为“生产”。. .同样的崩溃!

对我所说的“大型”请求主体的含义进行了一些澄清。会持续使应用程序崩溃的 POST/PUT 之一是大约 20,000 个字符(json)。由于 API 在一天中始终以小的 PUTS/POSTS 使用并保持运行,但只有在发出这些较大的请求时才会崩溃/挂起,我假设两者是连接的。

就 Rack/Ruby 1.9 而言。由于那里有大量关于 Rack 和 1.9 的信息,我确实将我们的 Rack gem 升级到了 git 存储库中的最新版本(据说修复了 1.9 的一些问题)。我读过关于 rewindable_input、ruby 1.9 等的大量困难……但是,由于我没有遇到我在其他 1.9 应用程序中遇到的 rewindable_input 错误,我确实认为这是一个不同的问题。此外,我在更改 rails 环境解决问题时排除了 Rack(当我搜索 Rack 源代码时,似乎没有任何特定于环境的方法会导致错误)。

希望这可以帮助!


更新以回应 pauliephonic

根本没有消息命中 Rails 日志(这实际上促使我在我们的 Web 堆栈中搜索了一段时间以查找该问题)。我认为发生崩溃/挂起的线索是,一旦发出大请求,应用程序在每个请求上只返回 500 个错误,但是这 500 个错误不会显示在 Rails 日志中。

我们的数据库配置是一样的(我们使用的是mysql集群,所以字面上是一样的,现在暂时使用本地mysql数据库,但是无论使用什么数据库都确认错误退出)

就多字节/ unicode而言。. . 我们正在一个国际化的应用程序中工作。. . 但是我不认为rails处理生产和其他人之间的unicode更改的方式对吗?正如我上面所说,这发生在POSTor上PUT。我在调试期间测试的方法是转到我的一个大型、高度嵌套的模型的相同编辑页面,然后尝试“保存”它。这会在生产中使应用程序崩溃,但不会在暂存中使应用程序崩溃。每次我测试相同的字符、相同的内容、相同的按钮、相同的行为。. . 根据环境做出不同的反应。我什至不能胡椒puts我的代码中到处都是语句,因为(看起来)请求没有进入 rails 应用程序。我的 Rails 日志或 Nginx 错误日志中没有收到任何错误消息(保存我在多次刷新时发布的那个)。

0 投票
1 回答
1412 浏览

ruby - 使用 Rack::Session::Datamapper

mkristgan 的rack_datamapper gem 说它“可以被包装以在特定环境中使用,即 Rack::Session::Datamapper”。

不幸的是,我对 Ruby 的了解还不足以完成这项任务——Ruby 中的模块/类仍然在我的脑海中(来自 PHP)。

任何人都可以提供使用 rack_datamapper 来实现 Rack::Session::Datamapper 的帮助吗?

无论如何,您可能不想这样做。

下面的答案很好,但仔细考虑后,我意识到我不应该这样做。相反,我将 user_id、ip 和名字(为方便起见)放在 cookie 中并保护它。