Witam,
W aplikacji railsowej zrobiłem sobie aplikację sinatry, która obsługuje api serwisu.
Natknąłem się na drobny problem.
begin
Page.find(params[:id]).to_json
rescue ActiveRecord::RecordNotFound
error(404)
end
W założeniach taki kod miał zwracać mi błąd 404, gdy nie znalazła się dana strona. I rzeczywiście tak się dzieje, ale nie do końca tak, jak sobie to obmyśliłem.
No route matches "/api/v1/calendar_pages/1000.json" with {:method=>:get}
Trace wskazuje na jeden z kilku innych middlewarów. Jeżeli dobrze rozumiem specyfikę racka, gdy ustawiam status 404, sinatra nie ma już co z tym zrobić i przesyła to dalej poprzez wszystkie middlewary, aż do railsów. W przypadku każdego (?) innego statusu, sinatra nie przesyła tego dalej.
To nie jest jakiś wielki problem, bo miało być 404 i jest 404, ale jednak chciałbym zrobić tak, żeby sinatra od razu rzuciła mi tym błędem nie pchając tego poprzez cały stack.
Spotkał się może ktoś z czymś takim? Wiadomo jak można to ładnie przeskoczyć?
Pozdrawiam
Łukasz