有没有办法覆盖sinatra默认的NotFound错误页面("Sinatra不知道这个小曲")?我希望sinatra只显示一个普通的字符串作为"找不到方法",当它找不到合适的路由时,但是当我从路由中引发404错误时,我希望它显示传入的错误消息.
像这样实现not_found块:
not_found do
'Method not found.'
end
Run Code Online (Sandbox Code Playgroud)
工作,但它不是一个有效的选项,因为我希望能够从这样的路线抛出我自己的NotFound错误消息:
get '/' do
begin
# some processing that can raise an exception if resource not found
rescue => e
error 404, e.message.to_json
end
end
Run Code Online (Sandbox Code Playgroud)
但正如预期的那样,not_found块会覆盖我的错误消息.
我有一个Sinatra :: Base webservice,我想从命令行Ruby程序开始,所以我有这个:
# command line program file
require 'mymodule/server'
puts "Running on 0.0.0.0:4567, debugging to STDOUT..."
MyModule::Server.run! bind: '0.0.0.0', port: 4567, environment: :production
Run Code Online (Sandbox Code Playgroud)
这按预期工作但它抛出:
$ myscript
Running on 0.0.0.0:4567, debugging to STDOUT...
== Sinatra/1.3.1 has taken the stage on 4567 for production with backup from Thin
>> Thin web server (v1.3.1 codename Triple Espresso)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567, CTRL+C to stop
127.0.0.1 - - [23/Dec/2011 18:44:55] "POST /images HTTP/1.1" 200 360 0.0133 …Run Code Online (Sandbox Code Playgroud)