2015-12-05 3 views
1

Я не уверен на 100% в данный момент, но я считаю, что я получаю исключение, которое вызывает статус запроса ответить на 401.трассировки Ошибка в Rack Middleware

Я устранен весь код в контроллере, и проблема все еще происходит, и что-то похоже на получение исключения, чтобы вернуть статус 401, поэтому нет трассировки стека.

Я создал собственное промежуточное программное обеспечение, чтобы попробовать и отладить, но я до сих пор не смог добраться до источника проблемы.

Как я могу выделить, где проблема?

Мы используем герою, поэтому, похоже, не работает, и у меня нет доступа к командной строке для работающего сервера. Я не смог повторить проблему на своей локальной машине-разработчике.

+0

Вы можете увидеть список посредников с командой 'rake middleware' (http://guides.rubyonrails.org/rails_on_rack.html#inspecting-middleware-stack) и отладить выполнение ... добавить brakepoints, logging и т. Д. правильно? – andrykonchin

+0

Спасибо, но я знаю, что я ищу средства для ввода данных в промежуточное ПО. – agbodike

ответ

1

Я никогда не узнал, как вводить журнал, но немного взломанным обходным путем является создание дополнительного промежуточного программного обеспечения, которое может выполнять регистрацию там, где вы хотите.

class Debugger 
    def initialize(app, *args) 
    @app = app 
    @args = args 
    end 

    def call(env) 
    Rails.logger.debug "executing app.call Debugger #{@args.first}" 
    status, headers, body = @app.call(env) 

    Rails.logger.debug "Status: #{status} after app.call Debugger #{@args.first}" 
    [status, headers, body] 
    end 
end 

, а затем добавив регистратор, где вы хотите в стек промежуточного программного обеспечения, в Rails это будет идти в config/application.rb:

config.middleware.insert_before Rack::Sendfile, "Debugger", "1" 

, который приведет к рельсам регистратор добавить

Executing app.call Debugger 1 

Затем выполните команду Rack: Sendfile и журнал:

Status: 400 after app.call Debugger 1 

Предполагая, что вы используете рельсы, а код состояния, возвращаемый Rack :: Sendfile, возвратил код состояния 400.

Примечание. Вам необходимо будет изменить регистратор и как настроить промежуточное программное обеспечение для запуска, если вы не используете Rails.

Это не идеальное решение, возможно, лучший способ сделать это, но на момент написания статьи у меня нет лучшего.