Как диагностировать исчезающие флеш-сообщения? - PullRequest
0 голосов
/ 25 апреля 2019

Я создал запись как обычно, и byebug подтвердил, что флеш-сообщение создано. Но когда меня перенаправляют, я не вижу никаких вспышек вообще. Вспышка удаляется в некоторых случаях? Как я могу это исправить? Я использую пользовательский метод авторизации omniauth. Если это вызывает проблемы, как я могу исследовать это дальше?

[262, 271] in /home/jacekp/.rvm/gems/ruby-2.4.5@rails4qc_charts/gems/actionpack-4.2.10/lib/action_dispatch/middleware/flash.rb
   262:       session    = Request::Session.find(env) || {}
   263:       flash_hash = env[KEY]
   264: 
   265:       if flash_hash && (flash_hash.present? || session.key?('flash'))
   266:         session["flash"] = flash_hash.to_session_value
=> 267:         env[KEY] = flash_hash.dup
   268:       end
   269: 
   270:       if (!session.respond_to?(:loaded?) || session.loaded?) && # (reset_session uses {}, which doesn't implement #loaded?)
   271:         session.key?('flash') && session['flash'].nil?
(byebug)  session["flash"] 
{"discard"=>[], "flashes"=>{"notice"=>"Sample was successfully created."}}
(byebug) n

[266, 275] in /home/jacekp/.rvm/gems/ruby-2.4.5@rails4qc_charts/gems/actionpack-4.2.10/lib/action_dispatch/middleware/flash.rb
   266:         session["flash"] = flash_hash.to_session_value
   267:         env[KEY] = flash_hash.dup
   268:       end
   269: 
   270:       if (!session.respond_to?(:loaded?) || session.loaded?) && # (reset_session uses {}, which doesn't implement #loaded?)
=> 271:         session.key?('flash') && session['flash'].nil?
   272:         session.delete('flash')
   273:       end
   274:     end
   275:   end

Эксперимент

Я вставил файлebug в .rvm / gems / ruby-2.4.5 @ rails4qc_charts / gems / rack-1.6.11 / lib / rack / request.rb в

  def session; byebug ;        @env['rack.session'] ||= {}              end

чтобы увидеть, что происходит, и попробовал страницу, которая устанавливает flash в сеансе. Я проверял это с

(byebug) @env ['rack.session']. Keys

и не нашел ничего, что дало бы мне подсказку.

1 Ответ

0 голосов
/ 26 апреля 2019

После нескольких часов отладки у меня было лучшее представление о том, что искать в Google, и нашел этот пост: В сеансе отсутствует флэш-память Rails

поэтому я закомментировал ошибку в моем конфиг / application.rb

config.middleware.use ActionDispatch::Cookies # Required for all session management
#config.middleware.use ActionDispatch::Session::CookieStore, config.session_options

Перед комментированием второй строки у меня исчезла ошибка прошивки.

...