Tag: rack

使用RSpec测试导轨金属/机架?

假设我有一个名为Preview的Metal类。 如何使用RSpec进行测试? 当我尝试: require ‘spec_helper’ describe Preview do it “should return the posted content” do post “/preview”, :content => “*title*” response.body.should == “*title*” end end 我明白了: undefined method `post’ for # 似乎RSpec没有加载:post方法,如果测试没有显式为Controller。 我试过指定:type => :controller无济于事。

NameError:未定义的局部变量或方法`app’

我创建的控制器规范失败,并显示以下错误消息: NameError: undefined local variable or method `app’ for \ # … # spec/controllers/sessions_conroller_spec.rb require ‘spec_helper’ describe SessionsController do before do @user = User.gen! end describe “#create” do context “when sending valid email and password” do it “renders a json hash …” do post :create, email: @user.email, password: @user.password expect(last_response.status).to eq(201) end end end describe […]

Rack Web Server和https:教程?

任何人都可以使用Ruby RACK网络服务器提供指向https和installint证书等设置的描述或教程的链接吗? 谢谢

rails json使用gzip压缩响应

我有一个用rails编写的api,每个请求都响应一个JSON响应。 响应可能很大,所以我需要使用gzip压缩JSON响应。 想知道如何在rails控制器中执行此操作? 我添加了这条线 use Rack::Deflater 在config.ru中 我是否还应该改变呈现JSON的行? render :json => response.to_json() 另外,我如何检查响应是否是gzip格式.. ?? 我从终端做了一个curl请求,我只看到普通的普通JSON。

使用Rails 2.3.5绕过机架版本错误

我目前正在Dreamhost上试图运行Rails 2.3.5应用程序。 这是情况,Dreamhost的服务器安装了Rails 2.2.2。 当然,我无法更新共享主机的rails版本,所以我在供应商中冻结了我的Rails。 Rails 2.3.5需要机架v1.0.1 gem。 Dreamhost使用机架v1.0.0 gem。 所以当我尝试定义: config.gem “rack”, :version => “1.0.1” 我明白了: can’t activate rack (~> 1.0.1, runtime) for [], already activated rack-1.0.0 for [] 所以我真正需要做的是绕过我的应用程序使用1.0.1的请求,并使用Dreamhost的1.0.0。 有谁知道如何配置这个? 它甚至可能吗? 谢谢您的帮助。

Mount Sinatra应用程序位于rails应用程序内并共享布局

我想在我的rails应用程序中安装一个sinatra应用程序。 但我希望这个人分享相同的布局。 iframe可以工作,但你还有其他想法吗? 谢谢

如何从我的sinatra应用程序中的类传递数据到websocket-rack?

我在sinatra应用程序中有一个websocket-rack的工作配置,用于具有多个屏幕的物理安装。 有一些function可以使消息在websockets中来回传递。 我的问题是这样的:我有一个页面带有标准的Web表单(即不是websocket表单),我的目标是从该表单中收集params,将params转换为字符串变量,然后发送该变量的内容(字符串)通过websocket到不同的页面/屏幕。 对于我的生活,我无法弄清楚如何做一个应该是一个相对简单的任务,因为从我的应用程序中的主类,我无法与我的Socket类进行通信,从我理解的基本上是机架应用。 我试图通过将resque设置为中间人来解决它,但很快发现我的问题没有改变。 我无法弄清楚如何从另一个类调用方法和/或将变量传递给Socket,以便它将推送到浏览器。 基本上,我有一个app.rb是这样的: module SomeThing class App < Sinatra::Base get '/' do #show a form end post '/submit' do #receive params #save params new_message = params.inspect #dream up some way to pass new_message to websocket end post '/otherscreen' do #have an open websocket to receive new_message end end class Socket < […]

流式网络上传到使用Rack的套接字

我目前有一个在FCGI处理程序中运行的Sinatra应用程序。 我想编写一个处理程序,它将位于rackup文件中(可能位于Sinatra应用程序前面)并将通过套接字将大文件上传到另一个服务器(不首先在磁盘上缓冲)并与请求联锁。 所以我想要做的是某种流式解码发送工作流程,而不进行param预处理。 我已经读到某个地方存在这个问题,因为特别是由于Rails团队想要看到中间件管道的方式所有在Rack中的上传已经被重新编排,这意味着上传将被缓冲,所以不仅我不能提供Rack中的上传进度,但我还必须将文件缓冲在磁盘上,然后将其发送到下游。 是否有一些交叉后端解决方案将Web服务器的请求循环与Rack响应器绑定,并且不强制重写输入(并且不强制上传内存缓冲,这是绝对的愚蠢疯狂)? 目前解决这类问题的方法是什么?

随机慢速Rack :: MethodOverride#调用Heroku上的rails应用程序

环境: Ruby:2.1.2 Rails:4.1.4 Heroku的 在我们在Heroku上托管的rails应用程序中,有时请求需要很长时间才能执行。 它只有1%或更少,但我们无法弄清楚它发生了什么。 我们安装了newrelic代理,它说它不是请求排队 ,它是占用所有时间执行的事务本身。 但是,事务跟踪显示如下: (同样的要求大多数时间只需要100毫秒执行) 据我所知,在我们的控制器被调用之前消耗的时间。 它消耗了 Rack::MethodOverride#call 这就是我们无法理解的。 此外,大多数时候(甚至总是,我们不确定)这种情况发生在移动设备发送的POST请求上。 这可能与缓慢的连接有关吗? (虽然POST-payload非常小)。 有没有人经历过这个? 关于如何继续探索这个问题的任何建议表示赞赏。 提前致谢!

如何使用Rack map在不同的端口上运行两个Thin(或其他)服务器?

我的目标是通过Rack进行HTTP和HTTPS / SSL的自动化测试,无需借助代理服务器设置或类似的东西。 我有一个我想要测试的gem,我希望其他人能够进行测试,所以我希望它尽可能地自我控制。 App的代码在自己运行时运行正常,所以它不包含在这里,问题在于Rack部分。 我想做这样的事情: app = Rack::Builder.app do map “/” do Rack::Handler::WEBrick.run App, Port: 3000 end map “/ssl” do Rack::Handler::WEBrick.run App, Port: 3001 # more options for SSL here… end end run app 我已经尝试了上面代码的几种组合,例如: http = Rack::Builder.app do map “/” do run App end end https = Rack::Builder.app do map “/ssl” do run […]