tutorial que español docs ruby filter sinatra

que - sinatra ruby github



¿Antes-filtro para todas las solicitudes POST en Sinatra? (4)

Se me ocurrió esto:

before do if request.request_method == "POST" puts "pre-process POST" end end

... pero si alguien conoce una mejor manera, por favor comparte.

¿Hay alguna manera de crear un filtro "antes" para capturar y procesar previamente todas las solicitudes POST en Sinatra?


Tu solución es completamente válida.

Lo haría así:

before do next unless request.post? puts "post it is!" end

O bien, también puede usar una ruta de publicación que atrapa todo y que luego entrega la solicitud (debe ser la primera ruta de publicación):

post ''*'' do puts "post it is!" pass end


Una forma de hacerlo sería crear una condición personalizada para usar en el filtro:

set(:method) do |method| method = method.to_s.upcase condition { request.request_method == method } end before :method => :post do puts "pre-process POST" end


+1 en la respuesta de Matt anterior ... Terminé expandiéndolo para incluir soporte para uno o más métodos como ese:

set :method do |*methods| methods = methods.map { |m| m.to_s.upcase } condition { methods.include?(request.request_method) } end before method: [:post, :patch] do # something end