Ошибка EOF в Rails, использующем гем разработки - PullRequest
0 голосов
/ 05 марта 2020

Я недавно установил гем разработки для аутентификации, и все работает хорошо, за исключением функции забытого пароля. Мой smtp в настоящее время указывает на адрес электронной почты Yahoo. Тем не менее, я получаю EOF конец файла с расширением ошибки. При разработке он доставляет сообщение просто отлично, но безрезультатно в производстве. Кроме того, я инициализировал переменные ENV для имени пользователя и пароля с помощью Heroku Config: set. Кроме того, я пробовал порт 587. Любая помощь будет принята с благодарностью! Я довольно плохо знаком с рельсами и искал похожие проблемы с журналами, но большинство из них значительно различались по сходству с этой проблемой. Спасибо!

config.action_mailer.perform_caching = false

  config.action_mailer.default_url_options = {:host => 'https:app.herokuapp.com' }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true




  ActionMailer::Base.smtp_settings = {
    :user_name => ENV['example@yahoo.com'],
    :password => ENV['examplepass'],
    :domain => 'https://example.herokuapp.com/',
    :address => 'smtp.mail.yahoo.com',
    :port =>465,
    :authentication => "plain",
    :enable_starttls_auto => true,

  }

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

Разрешение моей проблемы было в два раза. У меня не было должным образом настроенных и инициализированных конфигурационных героев. Мой файл .gitignore также не содержал исключений для предотвращения загрузки в репозиторий. В заключение я добавил камень figaro, bundle exe c install figaro, и он создал файл application.yml, необходимый для хранения этой фактической информации о пользователе / ​​пароле. https://railsapps.github.io/rails-environment-variables.html ----> весьма полезно при объяснении вариантов настройки переменных.



  :user_name => ENV['SENDGRID_USERNAME'],
  :password => ENV['SENDGRID_PASSWORD'],
  :domain => 'heroku.com',
  :address => 'smtp.sendgrid.net',
  :port =>587,
  :authentication => :plain,
  :enable_starttls_auto => true,

Также в приведенном выше коде у меня не было домена, указанного на heroku.com, но домен моего приложения на Heroku. Для production.rb вам нужен стандартный URL-адрес с именем вашего приложения. Если вы сохраняете URL по умолчанию heroku.com в production.rb, то при щелчке ссылки по электронной почте будет ошибка 404.

config.action_mailer.default_url_options = {:host => 'https://exampleapp.herokuapp.com/' }

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

0 голосов
/ 05 марта 2020

Первое, что я думаю:

Я думаю, в вашем файле есть невидимые символы, попробуйте очистить его. https://alvinalexander.com/blog/post/linux-unix/how-remove-non-printable-ascii-characters-file-unix

Сотрите файл и создайте новый, перепишите конфигурацию, избегайте копирования. возможно, сработает, если вы сделаете копирование без форматирования, чтобы отметить blo c, напишите что-то подобное и затем скопируйте его обратно в ваш файл.

Также читайте больше Что такое EOFError в Ruby файловом вводе / выводе? https://airbrake.io/blog/ruby-exception-handling/eof-error

Продолжить поиск, я нашел это

EOFError в Devise :: PasswordsController # create

Ошибка EOF почтовой программы комментарий пользователя

Ah classi c. Мой config / secrets.yml не отслеживается в git (естественно) и> выглядит так, как будто он был перезаписан и в какой-то момент потерял эти записи для электронной почты> поставщика smtp / username / password. Спасибо

Еще один Rails EOFError (достигнут конец файла) при сохранении пользовательского устройства

...