Нет такого промежуточного программного обеспечения для вставки раньше: ActionDispatch :: Http :: Parameters (RuntimeError) - PullRequest
0 голосов
/ 27 августа 2018

В моем приложении Rails 5.2 у меня есть следующее промежуточное ПО внутри папки app/middleware:

class CatchJsonParseErrors
  def initialize(app)
    @app = app
  end

  def call(env)
    begin
      @app.call(env)
    rescue ActionDispatch::Http::Parameters::ParseError => error
      raise error unless env['HTTP_ACCEPT']&.match(/application\/json/)

      error_output = "There was a problem in the JSON you submitted: #{error}"
      return [
        400, { "Content-Type" => "application/json" },
        [{ status: 400, error: error_output }.to_json]
      ]
    end
  end
end

В моем файле application.rb есть следующая строка:

config.middleware.insert_before(ActionDispatch::Http::Parameters, "CatchJsonParseErrors")

Когда я пытаюсь запустить мое приложение, оно возвращает следующую ошибку:

`assert_index': No such middleware to insert before: ActionDispatch::Http::Parameters (RuntimeError)

Как я могу это исправить?

1 Ответ

0 голосов
/ 27 августа 2018

Я действительно не вижу ActionDispatch::Http::Parameters промежуточного ПО на официальном Rails Guide или GitHub rails repo . Есть модуль ActionDispatch::Http::Parameters, и он просто включен в класс ActionDispatch::Request. Я предполагаю, что, поскольку объект запроса Rails (ActionDispatch) готов, вы можете свободно проверять / корректировать его параметры, и кажется, что это место находится сразу после ActionDispatch::RequestId промежуточного программного обеспечения.

...