草庐IT

ruby - 使用 Rack 中间件在每个请求上添加 api_key

我使用Devisetoken_authentication服务和ActiveResource客户端。我希望在每个请求中自动设置:auth_token参数!我试过了,但是没用...classAuthAppdefinitialize(app)@app=appenddefcall(env)status,headers,response=@app.call(env)request=Rack::Request.new(env)request.params[:auth_token]='jCxKPj8wJJdOnQJB8ERy'[status,headers,response]endend有什么想法

ruby - Gitlab Rack 攻击安装

我正在安装gitlab并按照Gitlab安装指南的所有说明进行操作。一切正常,但随后在步骤“初始化数据库并激活高级功能”它失败了!https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md我收到此错误消息。rakeaborted!uninitializedconstantRack::Attack/home/git/gitlab/config/application.rb:82:in`'/home/git/gitlab/config/application.rb:13:in`'/home/git

ruby - 基于 Rack 的 Web 服务器是否代表 FastCGI 协议(protocol)?

我读到CGI/FastCGI是一种用于将外部应用程序连接到Web服务器的协议(protocol)。因此Web服务器(如Apache或NginX)通过套接字将环境信息和页面请求本身发送到FastCGI进程,FastCGI通过同一连接将响应返回到Web服务器,Web服务器随后将该响应传递给最终用户。现在我对它和几乎所有Ruby网络框架和库都使用的Rack感到困惑。它通过包装HTTP请求和响应,提供用于在Ruby中开发Web应用程序的接口(interface)。那么,Unicorn、Thin、Passenger或Puma等基于Rack的Web服务器是否代表了相同的FastCGI方法?我可以说

ruby - 如何使用卡住的字符串文字启动 Rack 应用程序?

我正在尝试在ruby​​2.3下运行我们的应用程序,使用新的ruby​​功能在全局打开自动卡住字符串。(Ruby2.3)这通常是通过在启动时将参数传递给ruby​​脚本来完成的,如下所示:ruby--enable-frozen-string-literalruby_code_file.rb不幸的是,我们的应用程序是使用rackup启动的,我尝试了以下命令:rackup--enable-frozen-string-literal但这似乎不起作用。我如何将该参数传递给Rack? 最佳答案 很遗憾,您不能将ruby的参数传递给rackup

ruby-on-rails - rails 从 Rack 渲染 html

我正在使用Rack攻击。如果有人超出了我使用以下代码的限制:Rack::Attack.throttled_response=lambdado|env|[429,{},[ActionView::Base.new.render(file:'public/429.html')]]end当sby超过原始响应为respond_to:html的POST请求的限制时,429.html的呈现工作正常。当响应respond_to:js的POST请求超出限制时,屏幕上没有任何反应,但如果我查看日志,一切似乎都很好:Renderedpublic/429.html(1.4ms)在js响应的情况下如何显示429

ruby - 使用 Rack::Session::Datamapper

麦克里斯特根的rack_datamappergem说它“可以被包装以在特定环境中使用,即Rack::Session::Datamapper”。不幸的是,我对Ruby的了解还不足以完成这项任务——Ruby中的模块/类仍然在我的脑海中(来自PHP)。任何人都可以提供有关使用rack_datamapper来实现Rack::Session::Datamapper的帮助吗?无论如何你可能不想这样做。下面的答案很好,但仔细考虑后,我意识到我不应该这样做。相反,我将user_id、ip和名字(为了方便起见)放在cookie中并对其进行保护。 最佳答案

ruby - Sinatra/Rack 因 url 中的非 ascii 字符而失败

我在/find/Wrocław收到Encoding::UndefinedConversionError"\xC5"从ASCII-8BIT到UTF-8出于某种神秘的原因,sinatra将字符串作为ASCII而不是UTF-8传递。我发现了一些丑陋的解决方法...我不知道为什么Rack假定编码是ASCII-8BIT...无论如何,一种方法是使用string.force_encoding("UTF-8")...但是对所有参数都这样做很乏味 最佳答案 我在路由到“/protégés/:id”时遇到了一些类似的问题。我posted到Rack邮件

ruby Rack : startup and teardown operations (Tokyo Cabinet connection)

我在Rack上的Sinatra中构建了一个非常简单的REST服务。它由3个TokyoCabinet/Table数据存储支持,这些数据存储具有需要打开和关闭的连接。我有两个直接用Ruby编写的模型类,它们目前只是连接、获取或放置它们需要的东西,然后断开连接。显然,这不会长期有效。我也有一些像Warden这样依赖于这些模型类的Rack中间件。管理打开和关闭连接的最佳方法是什么?据我所知,Rack不提供启动/关闭Hook。我考虑过在env中插入一个提供对TC/TT对象的引用的中间件,但是我必须通过Sinatra将其通过管道传输到模型,这似乎也不是很有效;并且那只会获得与TC的按请求连接。我认

ruby - 在任何来源中都找不到 rack-cache-1.0.3

我已经创建了一个非常基本的Rails3.1应用程序,部署到运行Ruby1.8.7(P334)的机器上(不幸的是,我不能轻易转到1.9.2。那里)。部署并运行“bundleinstall”后,我尝试运行控制台:bundleexecrailsconsole然后我得到:Couldnotfindrack-cache-1.0.3inanyofthesources并且控制台没有出现。似乎这个特定版本的rack-cache被ActionPack3.1.0列为依赖项。有人可以向我解释我需要做什么来解决这个问题,即让bundler将这个版本的rack-cache附加到项目中吗?我还读到bundler将项

ruby-on-rails - Heroku + Rack 重写

仍然无法正常工作...Heroku的CedarStack上的Rails3.1.3、Ruby1.9.2。尝试使用https://github.com/jtrupiano/rack-rewrite制作http://domain301重定向到http://www.domain运气不好(应用程序可以运行,但根本不会发生重定向)。/config/initializers/rack_rewrite.rb(MyAppName实际上是正确的名称,domain.com是实际域):MyAppName::Application.config.middleware.insert_before(Rack::Lo