问题标签 [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.
ruby-on-rails - rails 2.3 的机架支持有什么影响?
现在它使用 rack 与 Web 服务器通信,在开发 Rails 应用程序方面有什么不同吗?我们是否应该采取不同的措施来利用它?它只是更干净还是比 cgi 实现有任何性能改进?
ruby-on-rails - 如何在 Cucumber 步骤中获取从 Rack 返回的响应?
我的 Rails 应用程序有一个 Cucumber 步骤:
但是该@response
对象是 my 返回的对象Controller
,它是 Rack 中间件将状态设置为我期望的状态。如何获得从最外层中间件返回的响应,而不是从控制器返回的响应?
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 上运行。
ruby-on-rails - Ruby On Rails 本身是 Rack 应用程序吗?
所以我从 Rack 文档中推断出来,但也许我错了......
ruby - 使用 Ruby 进行电子邮件验证和身份验证的用户注册
我正在尝试在 Sinatra 中制作一个 Web 应用程序,我想知道是否有一个很好的解决方案,用于用户注册与电子邮件验证以及身份验证 - 也许作为机架中间件?OpenID 支持也很不错。
我想我可以自己动手,但我不想重新发明轮子。如果我必须这样做,谁能指出我可能想要使用的库,甚至是示例代码?我还担心我最终可能会忘记通过注册/身份验证来实现一些重要的事情,因为我以前从未这样做过。
如果我需要一个自制的解决方案,我发现bcrypt-ruby用于密码加密和Sinatra::Mailer或Pony用于电子邮件。对于使用 OpenID 支持登录,有hancock和hancock-client,尽管我对用法并不完全清楚,而且我实际上并不需要单点登录支持。也许我应该只使用ruby openid 库?我还需要什么吗?
这是一个非常混乱的问题,但我希望更有经验的人能指出我正确的方向。
ruby-on-rails - 在 Rails XML 请求中将方法设置为 PUT
如果我这样做:
我得到“只允许获取、放置和删除请求”。为什么?导轨 2.3.2
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>
sinatra - 如何为带有乘客的 Sinatra 应用程序配置 VirtualHost?
我在Passenger 上运行了一个Rails 应用程序,一切正常。
我想添加一个 Sinatra 应用程序作为 Rack 应用程序与乘客一起运行,但我收到一个路由错误。
我的 VirtualHosts 文件如下所示:
我的 Sinatra 应用程序非常简单;我有一条get "/do_something" do ....
没有公共文件的路线。它只响应一些 JSON。
我怎样才能让它做类似的请求www.sub.domain2.com/do_something
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更改的方式对吗?正如我上面所说,这发生在POST
or上PUT
。我在调试期间测试的方法是转到我的一个大型、高度嵌套的模型的相同编辑页面,然后尝试“保存”它。这会在生产中使应用程序崩溃,但不会在暂存中使应用程序崩溃。每次我测试相同的字符、相同的内容、相同的按钮、相同的行为。. . 根据环境做出不同的反应。我什至不能胡椒puts
我的代码中到处都是语句,因为(看起来)请求没有进入 rails 应用程序。我的 Rails 日志或 Nginx 错误日志中没有收到任何错误消息(保存我在多次刷新时发布的那个)。
ruby - 使用 Rack::Session::Datamapper
mkristgan 的rack_datamapper gem 说它“可以被包装以在特定环境中使用,即 Rack::Session::Datamapper”。
不幸的是,我对 Ruby 的了解还不足以完成这项任务——Ruby 中的模块/类仍然在我的脑海中(来自 PHP)。
任何人都可以提供使用 rack_datamapper 来实现 Rack::Session::Datamapper 的帮助吗?
无论如何,您可能不想这样做。
下面的答案很好,但仔细考虑后,我意识到我不应该这样做。相反,我将 user_id、ip 和名字(为方便起见)放在 cookie 中并保护它。