Ошибка Heroku: мы сожалеем, но что-то пошло не так

#ruby-on-rails #heroku #devise

#ruby-on-rails #heroku #разработать

Вопрос:

я развернул приложение в heroku (финансовый трекер в разделе «Курс разработчика ROR» из udemy.com ). Кнопка входа в систему работает нормально, но когда я нажимаю на кнопку регистрации, она выдает мне эту ошибку

 We're sorry, but something went wrong.
If you are the application owner check the logs for more information.
  

Я успешно запустил heroku run rake db: migrate.
Я использовал devise gem для аутентификации.
Пожалуйста, есть идеи у кого-нибудь ??….Спасибо

Редактировать

Из журнала:

 2016-10-26T17:46:19.965045 00:00 heroku[router]: at=info method=GET   path="/users/sign_up" host=johnuzoma-finance-tracker.herokuapp.com   request_id=9b928dfe-66be-47b5-933b-3d5b6cf3a899 fwd="197.210.25.210"   dyno=web.1 connect=0ms service=19ms status=500 bytes=1754
2016-10-26T17:46:19.950321 00:00 app[web.1]: Started GET "/users/sign_up"  for 197.210.25.210 at 2016-10-26 17:46:19  0000
2016-10-26T17:46:19.955368 00:00 app[web.1]: Processing by  User::RegistrationsController#new as HTML
2016-10-26T17:46:19.957892 00:00 app[web.1]: Completed 500 Internal  Server Error in 2ms (ActiveRecord: 0.0ms)
2016-10-26T17:46:19.958887 00:00 app[web.1]:
2016-10-26T17:46:19.958889 00:00 app[web.1]: NoMethodError (undefined  method `for' for #<Devise::ParameterSanitizer:0x007f782dff6408>):
2016-10-26T17:46:19.958890 00:00 app[web.1]:    app/controllers/user/registrations_controller.rb:7:in `configure_permitted_parameters'
2016-10-26T17:46:19.958891 00:00 app[web.1]:
2016-10-26T17:46:19.958892 00:00 app[web.1]:
2016-10-26T17:46:20.651597 00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=johnuzoma-finance-tracker.herokuapp.com request_id=8d875ac1-de78-47 68-9cd0-a653afd2318b fwd="197.210.25.210"  dyno=web.1 connect=0ms service=6ms status=304 bytes=133
  

Код RegistrationsController

 class User::RegistrationsController < Devise::RegistrationsController
  before_filter :configure_permitted_parameters

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up).push(:first_name,  :last_name)
    devise_parameter_sanitizer.for(:account_update).push(:first_name, :last_name)
  end
end
  

Комментарии:

1. запустите эту команду «журналы heroku», чтобы проверить журналы ошибок

2. Запустите heroku logs -t и повторите ошибку снова. Журналы дадут вам представление о том, что является причиной этого. Опубликуйте журналы здесь, если вы все еще не можете разобраться в этом самостоятельно.

3. Вы также можете установить бесплатный плагин PaperTrail, чтобы упростить просмотр и поиск ваших журналов Heroku.

4. Есть ли прогресс в этом?

Ответ №1:

Итак, первое, что вы должны сделать, это зайти в панель администратора Heroku для вашего приложения и просмотреть файл журнала. Вы должны найти трассировку стека (должна выглядеть как ошибка, за которой следует куча вызовов методов и номеров строк). Другим вариантом является удаленный доступ к серверу приложений, переход к каталогу приложений Heroku на вашем компьютере и запуск (при условии, что у вас установлен интерфейс командной строки Heroku)

 heroku run bash 
  

затем перейдите в каталог журнала и запустите

 tail -f <replace_with_log_file_name>
  

(файл журнала должен быть рабочим.log или development.log) и это покажет вам поток активности журнала в реальном времени, так что просто воссоздайте ошибку и посмотрите, что произойдет.

Замените эти строки

 def configure_permitted_parameters
  devise_parameter_sanitizer.for(:sign_up).push(:first_name,  :last_name)
  devise_parameter_sanitizer.for(:account_update).push(:first_name, :last_name)
end
  

С этими строками

 def configure_permitted_parameters
  devise_parameter_sanitizer.permit(:sign_up, keys: [:first_name,  :last_name])
  devise_parameter_sanitizer.permit(:account_update, keys: [:first_name, :last_name])
end
  

Что произошло, так это то, что используемый вами gem devise изменил свой API в версии, поэтому синтаксис, который вы использовали, больше не действителен. Я предполагаю, что в какой-то момент времени вы выполнили обновление пакета или что-то, что непреднамеренно обновило ваш gem

Комментарии:

1. ~/log $ tail -f <«development.log»> bash: синтаксическая ошибка рядом с неожиданным символом `новая строка’

2. O Мне жаль, что вы не включаете <>, который обычно является коротким и для переменной в документации, хотя он не настолько универсален, чтобы я ожидал, что его поймут все, так что я виноват. Попробуй ~/log $ tail -f development.log

3. Сделал это, но я получил вот что: tail: не удается открыть `разработку. журнал’ для чтения: нет такого файла или каталога

4. Хорошо, пока вы находитесь в своем log каталоге, введите ls и скажите мне, какие имена .log файлов там?

5. только production.log

Ответ №2:

Если вы сталкиваетесь с такой большой трудностью при определении ошибки через журналы Heroku, вы можете попробовать еще одну вещь: вы можете увидеть ошибку в самом браузере и сделать это в своем production.rb файле (который вы найдете в каталоге config / environments) изменить:

 config.action_controller.consider_all_requests_local = false 
  

Для:

 config.action_controller.consider_all_requests_local = true
  

Теперь снова разверните свое приложение на Heroku, и все готово.

Комментарии:

1. Настолько эффективно, что это позволит любому выяснить, что делает ваш код, и откроет вам бесчисленные уязвимости.

2. уязвимости далеко, сэр… человек даже не знает о команде heroku logs .