Rails - рендерит статическую html-страницу из промежуточного ПО
Вчера мое приложение посетил бот Яндекса с неверным URL
/restday?biG%D9%02
и для этого приложения выдает ошибку
ArgumentError: invalid byte sequence in UTF-8
Мне нужно визуализировать 400.html статическую страницу со статусом 400 вместо 404 всякий раз, когда есть ошибка недопустимого символа. Я следовал за решениями из этого вопроса и самоцвета стойкости, но он не служит цели, поскольку показывает 404 или перенаправляет на определенную страницу.
Я добавил следующее к /config/application.rb
require "#{Rails.root}/lib/handle_invalid_percent_encoding.rb"
config.middleware.insert 0, HandleInvalidPercentEncoding
И это мое промежуточное программное обеспечение handle_invalid_percent_encoding.rb
требует "стойки"
Класс HandleInvalidPercentEncoding
def initialize(app) @app = app end def call(env) request = Rack::Request.new(env.dup) temp = request.params rescue :bad_form_data if temp == :bad_form_data error_response else @app.call(env) end end private def error_response # serve static html file end
конец
PS Мне нужно отображать ошибку неверного запроса только тогда, когда в качестве аргумента указана неправильная кодировка.