development.rb: 45: в блоке ': неопределенный метод `[]' для nil: NilClass (NoMethodError) - PullRequest
0 голосов
/ 14 апреля 2020
config.action_mailer.default_url_options = {:host => Rails.application.secrets[:action_mailer]['default_url_options']['host']}
config.action_mailer.delivery_method = Rails.application.secrets[:action_mailer]['delivery_method'].to_sym
config.action_mailer.smtp_settings = {
:address              => Rails.application.secrets[:action_mailer]['smtp_settings']['address'],
:domain               => Rails.application.secrets[:action_mailer]['smtp_settings']['domain'],
:port                 => Rails.application.secrets[:action_mailer]['smtp_settings']['port'].to_i,
:user_name            => Rails.application.secrets[:action_mailer]['smtp_settings']['user_name'],
:password             => Rails.application.secrets[:action_mailer]['smtp_settings']['password'],
:authentication       => Rails.application.secrets[:action_mailer]['smtp_settings']['authentication'],
:enable_starttls_auto => eval(Rails.application.secrets[:action_mailer]['smtp_settings']['enable_starttls_auto']), #true or false  }

Этот код находится в файле development.rb. Я не знаю, как исправить эту ошибку, кто-нибудь знает, что нужно сделать, чтобы конфигурация smtp работала? Ниже я напишу код из файла secret.yml

action_mailer:
 default_url_options:
  host: "localhost:3000"
 delivery_method: "smtp"

smtp_settings:
    address: "smtp.gmail.com"
    domain: "gmail.com"
    port: "587"
    user_name: "my@gmail.com"
    password: "mypassword"
    authentication: :plain
    enable_starttls_auto: "true"

Я добавлю, что он работает на ruby 2.2.0 и rails 4.2.0

1 Ответ

1 голос
/ 15 апреля 2020

Секреты Rails - это :symbol имена, а не 'string' имена.

Rails.application.secrets[:action_mailer][:default_url_options][:host]

и т. Д. c.

Rails.application.secrets[:action_mailer].keys, вероятно, вернутся массив символов, а также. Убедитесь, что вы правильно обращаетесь к своим хэшам.

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