Tag: 架子

从Sinatra调用Sinatra会产生与外部请求不同的结果

在这里提出我的问题。 所以我试图使用这个进行智能重定向: get “/category/:id/merge” do #… setting @catalog_id and category call env.merge(“PATH_INFO” => “/catalog/#{@catalog_id}/category/#{category.id}”, “REQUEST_METHOD”=>”PATCH”,”QUERY_STRING”=>”merge=1″) status 200 end 但是当我查看日志时,我看到的东西不仅令人沮丧,而且完全荒谬: # this one is from internal call I, [2013-03-21T15:55:54.382153 #29569] INFO — : Processing GET /catalog/1/category/2686/merge I, [2013-03-21T15:55:54.382239 #29569] INFO — : Parameters: {} … I, [2013-03-21T15:55:54.394992 #29569] INFO — : Processing PATCH /catalog/1/category/2686 I, [2013-03-21T15:55:54.395041 […]

Sinatra:三个日志

我正在使用一个非常简单的Sinatra应用程序,效果很好。 但是,每条日志消息重复三次。 我可以通过禁用Sinatra日志记录将其降低到2 disable :logging 但我还有两个。 消息略有不同,所以我收集他们来自Rack和堆栈中的其他地方。 如何完全禁用成功Web请求的记录?

在一堆机架式应用程序/中间件之间共享对象的最佳/最优雅方式?

在机架安装的应用程序/中间件之间共享对象的最佳习惯是什么? 例如,这个config.ru有两个映射到不同端点的Sinatra应用程序: class App1 < Sinatra::Base # … end class App2 < Sinatra::Base # … end map '/app1' do run App1 end map '/app2' do run App2 end 现在,如果这两个应用程序需要共享一个对象,无论是数据库连接器还是任何其他对象,那么最好的成语是什么? 我基本上看到两个选择: 1-在config.ru级别创建一个常量,并在应用程序中简单地引用该常量。 例如: SHARED_OBJECT = “hello world” class App1 < Sinatra::Base get '/' do SHARED_OBJECT end end class App2 < Sinatra::Base get '/' do SHARED_OBJECT end […]

RACK在哪里登录?

我正在通过RACK运行一个sinatra应用程序。 该活动记录到哪个文件? 另外我如何设置日志文件路径?

与do end 一起使用时抛出抛出错误

这不起作用: run Proc.new do |env| [200, { “Content-Type” => “application/json; charset=UTF-8” }, [“{\”name\”:\”Rack App\”}”]] end 但这样做: run Proc.new { |env| [200, { “Content-Type” => “application/json; charset=UTF-8” }, [“{\”name\”:\”Rack App\”}”]] } 任何想法,为什么它与do..end一起使用时抛出错误? 我得到的错误: app.ru:1:in new: tried to create Proc object without a block (ArgumentError)

从TestCase调用Sinatra应用程序实例方法

我在Sinatra应用程序中有一个util方法,我想从我的TestCase进行测试。 问题是我不知道如何调用它,如果我只是使用app.util_method我有错误NameError: undefined local variable or method ‘util_method’ for # my_app.rb: class MyApp < Sinatra::Base # […] routes methods # utils methods def util_method return "hi" end end my_app_test.rb: require “my_app.rb” require “test/unit” require “rack/test” class MyAppTest < Test::Unit::TestCase include Rack::Test::Methods def app MyApp.new end # […] routes methods tests def test_util_method assert_equal( "hi", app.util_method […]

如何从Sinatra中转储HTTP请求?

有没有办法以应用程序接收数据的确切方式将所有传入请求转储到Sinatra应用程序? 也许是某种Rack中间件?

如何在Sinatra中解析一次JSON请求体并将其暴露给所有路由?

我正在编写一个API,它接收一个JSON有效负载作为请求主体。 为了获得它,我正在做这样的事情: post ‘/doSomething’ do request.body.rewind request_payload = JSON.parse request.body.read #do something with request_payload body request_payload[‘someKey’] end 有什么方法可以抽象出来,这样我就不需要为每条路线做这件事了? 我的一些路由比这更复杂,因此request.body将通过这种方法重新读取和重新分析每个路由,我想避免。 有没有办法让request_payload神奇地可用于路由? 像这样: post ‘/doSomething’ do #do something with request_payload, it’s already parsed and available body request_payload[‘someKey’] end

从Sinatra / Rack应用程序流式传输数据

我试图从Ruby(1.9.1p378)Sinatra(1.0)Rack(1.2.1)应用程序流文本数据(XML / JSON)。 建议的解决方案(例如, 有没有办法将html刷新到Sinatra中的线路 )似乎不起作用 – 当我产生某些无限流的元素时(例如来自%w(foo bar).cycle ), %w(foo bar).cycle 。 我试过webrick和thin作为服务器。 有关完成此任务的任何建议吗? 我应该使用http://sinatra.rubyforge.org/api/classes/Sinatra/Streaming.html ,如果是这样,我将如何在我的应用程序中使用它?