2011-11-18 20 views
13

Acabo de configurar Devise (complemento de autenticación de rieles) para enviar un correo electrónico de confirmación al registrarse. Se trataba de mi poniendo lo siguiente en mi archivo environment.rb:Ocultar mi información confidencial (por ejemplo, contraseña) de github

ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.smtp_settings = { 
    :tls => true, 
    :address => "smtp.gmail.com", 
    :port => 587, 
    :domain => "gmail.com", 
    :authentication => :login, 
    :user_name => "[my email]", 
    :password => "[my pass]" 
} 

Yo, obviamente, no quieren empujar esto a github con [mi pase] allí sentado. ¿Hay una práctica estándar aquí?

Respuesta

10

El estándar es poner sus configuraciones en un archivo YAML que no está incluido en su repositorio.

Luego simplemente obtiene los datos del mismo.

Compruebe Railscast "#85 YAML Configuration File" para verlo en acción.

+0

Por supuesto, si solo tiene la intención de acceder a su archivo de configuración desde ruby, hay [miembros de la comunidad] (http://www.amazon.ca/Distributed-Programming-Ruby-Mark-Bates/dp/0321638360) que [prefiera configurar en ... ruby] (http://www.metabates.com/2011/06/28/lets-say-goodbye-to-yaml-for-configuration-shall-we/). –

+0

Obtener los datos puede implicar un archivo en su 'config/initializers' que dice algo como' CONFIG = YAML.load_file ("# {:: Rails.root.to_s} /config/config.yml") [:: Rails. env] ' – jimworm

1

Cree un archivo de configuración que contenga las configuraciones de correo y cárguelo de un archivo. Compruebe en el archivo de configuración con todas las configuraciones borradas. Haga que su aplicación verifique si el archivo está completo y, de no ser así, muestre un error y salga con elegancia (o deshabilite el envío de correos, solo asegúrese de que el usuario sepa qué está sucediendo).

Esto tiene la ventaja añadida de que los usuarios pueden cambiar fácilmente la configuración de correo sin tener que editar el código. Decirle a un usuario que edite el código para establecer una configuración es, en general, una mala idea. Además, puede mantener la configuración en una ubicación separada del código para que sea más fácil acceder a ella.

4

apneadiving es correcto, agregando a su solución, otras personas que descargan su código, pueden no encontrar rápidamente la forma de generar este yml, por lo que tendrá que darles una pista, teniendo la siguiente estructura:

config 
    | 
    |--- environment.rb 
    |--- mail_settings.yml 
    |--- main_settings.yml.example 

tener el archivo 'mail_settings.yml' contiene su información sensible y no se incluye en el repositorio, y tienen 'main_settings.yml.example' incluido en tu repositorio, y que tiene la misma estructura que 'mail_settings.yml' .

Y para ser más útil, proporcione una sección en su archivo README, que describa que las personas necesitan copiar el archivo mail_settings.yml.example a mail_settings.yml y mejorar su contenido.

Cuestiones relacionadas