2013-12-01 4 views
6

Я пытаюсь поместить свой пароль для электронной почты в файл .yml.Rails 4 Инициализатор не загружается

Под config/initializers У меня есть файл emailers_config.rb

require 'yaml' 
EMAIL_CONFIG = YAML.load(File.read(Rails.root + "config/mailer_config.yml")) 

и в моем config/mailer_config.yml у меня есть:

#production password 
smtp_password_pro: foo 
#devevopment env password 
smtp_password_dev: bar 

Теперь, похоже Мои инициализирует не работает, потому что я получаю эту uninitialized constant EMAIL_CONFIG (NameError)

Теперь Rails должен лаять все под папкой инициализаторов, поэтому загрузка файла не является проблемой.

Что здесь не так?

ответ

1

Я не знаю ответа на ваш вопрос, но я могу порекомендовать другой метод
Пароли могут быть сохранены проще .env файл http://i.stack.imgur.com/jbcAO.png
как этот

#Root dir create file ".env" 
PASSWORD=123456 

и нагрузки пароль

#Somewhere in app 
ENV['PASSWORD'] #=> 123456 

это работает Я надеюсь, что это поможет Вы

enter image description here

+0

ENV [: smtp_password_dev] = nil .... –

+1

что вы делаете bro? 'nil' - это рубиновый объект !!! –

+0

нет, я имею в виду результат, который я получаю, равен нулю, он не загружает файл –

0

Попробуйте это:

В вашем конфигурации/mailer_config.yml:

development: 
    smtp_password: foo 
    production: 
    smtp_password: bar 

А потом, в emailers_config.rb:

EMAIL_CONFIG = YAML.load_file("#{Rails.root}/config/mailer_config.yml")[Rails.env] 

Теперь, вы получите пароль для каждого окр, используя:

EMAIL_CONFIG['smtp_password'] 
4

Если у вас возникли проблемы с доступом к постоянным в файле YAML, попробуйте выключить локальный сервер с control + c, а затем запустить:

$ spring stop 

загрузки на сервер или консоль снова:

$ rails [server | console]

И вы могли бы иметь доступ к этому с onstant.

0

Попробуйте что-то вроде этого: ENGINE_CONFIG = YAML.load (File.read (File.join (Rails.root, "конфигурации/подпапка", "engine.yml"))) [Rails.env]

Смежные вопросы