cómo colocar la configuration SMTP en un file separado?

Estoy configurando mi aplicación para enviar correos electrónicos a través de smtp de gmail, así que estoy escribiendo la configuration de action_mailer en el file production.rb .

Aunque no quiero que mis cnetworkingenciales de gmail estén escritas en el file production.rb , que está versionado por git.

esto es lo que he hecho hasta ahora:

en producción rb:

  require "SmtpData" config.action_mailer.default_url_options = {:host => 'my server's ip'} config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { enable_starttls_auto: "true", address: SmtpData::ADDRESS, port: SmtpData::PORT, domain: "pjforex.com", authentication: :plain, :user_name => SmtpData::USER, :password => SmtpData::PASS } 

luego creé config/initializers/smtp_data.rb contenía:

 class SmtpData USER = 'user@gmail.com' PASS = 'password' ADDRESS = "smtp.gmail.com" PORT = "587" end 

Pero cuando mi capistrano intenta precomstackr los activos, obtengo:

 rake aborted! uninitialized constant SmtpData 

alguna pista sobre cómo resolver esto. o mejor enfoque a este problema?

Gracias,

Debe almacenar su configuration en un file excluido de Git pero compartido entre implementaciones. Suponiendo que está utilizando Capistrano 3, sería algo como esto:

1) En su server cree un file shanetworking/config/smtp.yml (usando YAML no es algo crucial, pero es más limpio para las configuraciones) en la carpeta raíz de Capistrano con el siguiente contenido:

 user: user@gmail.com pass: your_password address: smtp.gmail.com port: 587 

2) Agregue este file a sus linked_files en config/deploy.rb (idealmente, config/database.yml debe almacenar de esta manera):

 set :linked_files, %w{config/database.yml config/smtp.yml} 

3) Leer la configuration de SMTP en production.rb desde config/smtp.yml .

4) También puede tener config/smtp.yml localmente para su entorno de desarrollo, pero no olvide agregarlo a su .gitignore luego.

Creo que production.rb se carga antes que smtp_data.rb , por lo que production.rb no puede acceder a la class que ha definido.

Una solución que utilizamos, para mantener cnetworkingenciales confidenciales de nuestras versiones de git, es crear (como en su ejemplo) production.rb.template y agregar esto a su repository de git. Este file es más o less una copy de lo que actualmente tiene para production.rb , excepto que tendría marcadores de position donde deberían ir las cnetworkingenciales. Por ejemplo,

 :username => USERNAME GOES HERE 

Luego, eliminamos production.rb del repository (y, opcionalmente, lo configuramos para que git lo ignore). Cuando revisa su copy local del repository, copy production.rb.template como production.rb y completa la información de cnetworkingenciales. Esto solo existirá en su implementación local y no sería empujado a git.

    Intereting Posts