在Sinatra中,如果我创建一个简单的端点,例如:post'/users'do'posted'endcurl-v-XGEThttp://localhost:8080/users返回404,而我期望的是405。我查看了文档,但没有找到任何内容。在深入研究源代码之前,有人知道如何在Sinatra中处理和返回405吗?有点像notfound方法:not_founddo'Notfound-'+request.pathend 最佳答案 你得到了一个404,因为sinatra找不到获取路由/users。如果你想返回自定义错误,你可以查看Hal
我正在尝试一个简单的重定向到iOS模式的OTA安装链接:itms-services://?action=download-manifest&url=https://builds.net/abc.plist不管Sinatra(webrick?)尝试过的重定向方法如何,总是提示无效的URI:ERRORURI::InvalidURIError:badURI(absolutebutnopath):我已经尝试过以下调用:#Simpleredirectredirect'itms-services://?action=download-manifest&url=https://builds.net/
我有一个sinatra应用程序,它有一个get路由。它做了很多工作,因此大约需要一分钟才能完成任务。当我尝试curl时,它一切正常,但我没有得到响应代码或任何与此相关的东西。curl超时,如果我在浏览器上尝试它也会超时。并且都在30秒内超时。我一直在努力寻找增加服务器超时的方法。有线索吗? 最佳答案 似乎有一种方法可以将设置传递给Sinatra使用的服务器:set:server_settings,:timeout=>60因此,如果您使用的是thin,则可以按照FábioPerez的描述使用超时设置。在GitHub中有关于此设置的讨论
我知道在Sinatra中使数据在路由之间保持不变的不同方法。我只是想以Ruby/面向对象的方式更多地理解这一点。我的猜测是:无论何时构建Sinatra应用程序,您都在实例化Sinatra::Application对象。是不是每次调用get/post路由方法时,都会创建一个新的Sinatra::Application,因此实例变量会有所不同? 最佳答案 你是对的。每次您打开一条新路线时,都会重新实例化您的rack/sinatra应用程序的一个新实例。您可以通过一种非常简单的方式来检查:require'sinatra/base'clas
我在/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邮件
我有以下小型Sinatra应用程序(我删除了多余的不需要的代码):helpersdodefflash(args={})session[:flash]=argsenddefflash_now(args={})@flash=argsendendbeforedo@flash=session[:flash]||{}session[:flash]=nilendpost'/post'doclient=Twitter::Client.new(:login=>'xxxxxxx',:password=>'xxxxxxx')username=params[:username]type=params[:ty
我有一个sinatra服务foo.rb要在不同的端口上运行它,我会输入“rubyfoo.rb-p5000”。当程序运行时,我希望能够获取端口(在本例中为5000)和其他信息。有没有办法在应用程序运行时获取这样的信息?谢谢 最佳答案 您应该能够在任何Sinatra操作中使用settings.port访问它。参见thispage获取所有内置设置的列表。 关于ruby-Sinatra以编程方式获取端口和有关服务的其他信息,我们在StackOverflow上找到一个类似的问题:
.js.erb很不错,因为您可以使用它们替换页面的某些部分而无需离开当前页面,这为网站/应用程序带来了更干净、更完整的感觉。有没有办法在sinatra中使用它们?或同等物? 最佳答案 只需将.js添加到您传递的erb()符号的末尾。Ala(调用mypage.js.erb):erb"mypage.js".to_sym虽然很脏,但它确实有效。 关于ruby-on-rails-来自rails的带有Sinatra:whatistheequivalentofa.js.erb的Ruby?,我们在St
我正在使用Sinatra1.2.0和Ruby1.9.2(我需要为这个项目使用这个版本的Ruby)但我不知道为什么我一直收到此SyntaxError。在我的index.erb中使用以下内容时,我可以重现此错误:Thecaseis:It'saFOO!It'saBAR!It'ssomethingelse...!错误:SyntaxErrorat//Users/foo/Workspace/sinatra_case_test/views/index.erb:4:syntaxerror,unexpectedtIVAR,expectingkeyword_when;case@status;@_out_b
我有一些动态加载的插件,它们在启动时会注册它们的路由,但是我还需要能够在它们被禁用时删除它们的路由。有没有办法删除现有路线?API没有任何我能找到的方法来删除它们,我能想到的唯一其他方法是直接转到Sinatra::Base中的@routes对象,但我不确定如果你能做任何事情,如果你能……这样做安全吗? 最佳答案 查看代码几分钟后,我没有看到任何“破坏性”改变路由的代码,除了:C:\Ruby\lib\ruby\gems\1.9.1\gems\sinatra-1.3.1\lib\sinatra\base.rb:936defreset!9