Ruby на рельсах учебник - глава 11 - аутентификация работает в dev, но не на производстве - PullRequest
0 голосов
/ 08 апреля 2020

Я работаю над учебником Майкла Хартла ruby по рельсам, в настоящее время изучаю аутентификации электронной почты (глава 11).

Я закончил все в этой главе, и все прекрасно работает в среда разработки , но когда я запускаю sh в производство с Heroku, я получаю ошибку

EXPECTED: после того, как новый пользователь отправит форму создания учетной записи, его следует направить обратно в root_url с fla sh сообщение с просьбой проверить свою электронную почту для аутентификации

АКТУАЛЬНОЕ ПОВЕДЕНИЕ: после того, как новый пользователь отправляет форму создания учетной записи, он, кажется, перенаправляется на / users и возникает ошибка (ошибка гласит: мы извините, но что-то пошло не так, пожалуйста, проверьте журналы).

Опять же, это прекрасно работает в dev, но не в производстве.

ЧТО Я ПРОБОВАЛ:

- Я проверил логи и вижу, что электронная почта была сгенерирована как ожидалось

-Я запустил консоль в Heroku и вижу, что новый пользователь был создан правильно y в базе данных; для поля аутентификации установлено правильное значение false (Ожидание электронной почты)

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

-Я проверил модель пользователя и контроллер пользователя, но не вижу никаких ошибок (надеюсь, набор тестов все равно поймал бы их в dev или ошибка воспроизводилась бы в dev)

-Я сбрасываю базу данных heroku и заново запускаю миграцию и db: seed, чтобы посмотреть, поможет ли это, без изменений

-Я снова сделал pu sh в Heroku, чтобы увидеть, что там что-то не так - нет изменить

-Я пытался удалить дополнение в Heroku и переустановить его, но, очевидно, это заблокировало мою учетную запись Sendgrid ... поэтому я настоятельно рекомендую вам не делать этого. Сейчас я работаю с Sendgrid для повторной активации.

В приложении есть ошибка из журналов Heroku, которую я смог найти:

2020-04-08T16: 52: 25.985006 + 00: 00 app [ web.1]: ---- == _ mimepart_5e8e0149d677d_b2b0ebb83ed445621b-- 2020-04-08T16: 52: 25.985006 + 00: 00 app [web.1]: 2020-04-08T16: 52: 25.985363 + 00: 00 app [web .1]: I, [2020-04-08T16: 52: 25.985276 # 11] INFO -: [f4baf186-2987-4d21-bd92-c8324b3a09ca] Выполнено 500 Внутренняя ошибка сервера за 716 мс (ActiveRecord: 6,2 мс | Распределения: 5310 ) 2020-04-08T16: 52: 25.986654 + 00: 00 app [web.1]: F, [2020-04-08T16: 52: 25.986541 # 11] FATAL -: [f4baf186-2987-4d21-bd92-c8324b3a09ca ] 2020-04-08T16: 52: 25.986655 + 00: 00 приложение [web.1]: [f4baf186-2987-4d21-bd92-c8324b3a09ca] Net :: SMTPAuthenticationError (535 Ошибка аутентификации: учетная запись отключена 2020-04-08T16 : 52: 25.986655 + 00: 00 app [web.1]:): 2020-04-08T16: 52: 25.986655 + 00: 00 app [web.1]: [f4baf186-2987-4d21-bd92-c8324b3a09ca] 2020- 04-08T16: 52: 25.986656 + 00:00 приложение [web.1]: [f4baf186-2987-4d21-bd92-c8324b3a09c a] app / models / user.rb: 53: в send_activation_email' 2020-04-08T16:52:25.986656+00:00 app[web.1]: [f4baf186-2987-4d21-bd92-c8324b3a09ca] app/controllers/users_controller.rb:22:in create '2020-04-08T16: 52: 25.997396 + 00: 00 heroku [маршрутизатор]: at = информационный метод = путь POST = "/ users" host = day-dawn-31172.herokuapp.com request_id = f4baf186-2987-4d21-bd92-c8324b3a09ca fwd = "72.38.16.251" dyno = web.1 connect = 0ms service = 724ms status = 500 bytes = 1891 protocol = https

Любая помощь очень ценится !!!

Прилагаются настройки SMTP-сервера на случай, если они являются проблемой?

`

  config.action_mailer.delivery_method = :smtp
  host = 'afternoon-dawn-31172.herokuapp.com'
  config.action_mailer.default_url_options = { host: host }
  ActionMailer::Base.smtp_settings = {
    :address        => 'smtp.sendgrid.net',
    :port           => '587',
    :authentication => :plain,
    :user_name      => ENV['SENDGRID_USERNAME'],
    :password       => ENV['SENDGRID_PASSWORD'],
    :domain         => 'heroku.com',
    :enable_starttls_auto => true
  }  `

Ответы [ 3 ]

0 голосов
/ 09 апреля 2020

спасибо за вашу помощь.

Учитывая то, что у меня возникли проблемы с SENDGRID, включая тот факт, что мне удалось полностью запретить себе использование SENDGRID путем удаления / переустановки дополнения Heroku, я решил изменить SMTP на Google .

Это было легко сделать и с первого раза сработало.

Одно замечание: не забудьте настроить двухэтапную проверку перед настройкой SMTP и сгенерировать приложение, задающее c пароль.

Еще раз спасибо всем, кто прокомментировал.

0 голосов
/ 01 мая 2020

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

  • За плохим соединением Sendgrid также последовало запрещение, когда я пытался переустановить аддон! Я создал новую учетную запись Sendgrid на sendgrid.com и отправил SOS в службу поддержки. В течение 12 часов они исправили мой доступ с моей учетной записью heroku:)

  • Затем я создал API-ключ на sendgrid.com и настроил его с помощью: heroku config:set SENDGRID_API_KEY=my_api_key

  • в config / environment / production.rb:

    config.action_mailer.perform_deliveries = true
    config.action_mailer.default_url_options = { host: host, protocol: 'https' }
    ActionMailer::Base.smtp_settings = {
        user_name: ENV['SENDGRID_USERNAME'],
        password: ENV['SENDGRID_PASSWORD'],
        domain: 'staticpages-pg.herokuapp.com',
        address: 'smtp.sendgrid.net',
        port: 587, 
        authentication: :plain,
        enable_starttls_auto: true
      }
  • Я также добавил гем 'sendgrid- ruby'.

Процесс подробно описан здесь: https://devcenter.heroku.com/articles/sendgrid#actionmailer

0 голосов
/ 08 апреля 2020

В журналах, которые вы прикрепили - вы можете найти этот фрагмент: Net :: SMTPAuthenticationError (535 Ошибка аутентификации: учетная запись отключена 2020-04-08T16: 52: 25.986655 + 00: 00 приложение [web.1]: )

Это означает, что SMTP (сервис для отправки электронной почты) плохо подходит для аутентификации. Так что вы должны проверить здесь - с конфигурацией SMTP. Может быть, есть правило, которое настраивает конфигурации только для разработки ENV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...