2015-02-25 2 views
1

Я работаю через «Учиться Ruby On Rails» Даниэль Кехо, и я пришел на этот кусок кода:Rails.application - Вопросы по рельсам Внутренние

В конфигурации/среда/development.rb:

config.action_mailer.smtp_settings = { 
    address: "smtp.gmail.com", 
    port: 587, 
    domain: Rails.application.secrets.domain_name, 
    authentication: "plain", 
    enable_starttls_auto: true, 
    user_name: Rails.application.secrets.email_provider_username, 
    password: Rails.application.secrets.email_provider_password 
    } 

    # ActionMailer Config 
    config.action_mailer.default_url_options = { :host => 'localhost:3000' } 
    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.raise_delivery_errors = true 
    # Send email in development mode? 
    config.action_mailer.perform_deliveries = true 

Это заставило меня подумать о двух вопросах.

  1. В конфигурации/secrets.yml, мы определили переменные среды для использования конфиденциальных данных. Например, email_provider_username: <%= ENV["GMAIL_USERNAME"]. Почему бы просто не использовать ERB в файле конфигурации config/environment/development.rb? Единственная причина, по которой я могу думать, заключается в том, что development.rb не запускается через препроцессор ERB. Это так? Просто пытаюсь понять конструктивное решение здесь.
  2. Я предполагаю, что, поскольку мы используем точечную нотацию, Rails - это объект. Может кто-нибудь объяснить мне, как это работает? Является ли это «вершиной» моего приложения для рельсов?

ответ

0
  1. Я считаю, что это сделано таким образом, потому что вы не обязательно хранить его в переменной окружения как для развития и производственной среды. Для development вы можете просто сохранить его непосредственно в файле, но для production вы можете сохранить его в переменной окружения, это дает вам больше возможностей для этого.

  2. Rails - фактически модуль, а не класс. Вы можете увидеть, как это работает, посмотрев на Rails исходный код:

    https://github.com/rails/rails/blob/master/railties/lib/rails.rb

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