¿Cuál es su flujo de trabajo para usar el control de código fuente con Django?

Parece que estás tratando de superar la configuración, ¿verdad?

Bueno, uno de los koans del Zen de Python es “explícito es mejor que implícito”. Con eso en mente, prefiero tener explícitamente todas las versiones de configuraciones almacenadas en el control de código fuente. Lo que hace que cosas como tener “local_settings.py” como parte de .gitignore sean inaceptables para mí. De hecho, me he encontrado con problemas con las copias de los archivos local_settings.py que están tan fuera del archivo de configuración que la incorporación de nuevos desarrolladores y / o implementación se vuelve muy problemática.

Lo que significa que prefiero hacer es lo siguiente:

  1. Cree un paquete de configuración (directorio).
  2. Cree un módulo base (.py) que contenga la configuración predeterminada.
  3. Cree versiones dependientes de la ubicación que lo extiendan. Ejemplos serían módulos llamados cosas como ‘dev (.py)’ y ‘producción (.py)’.
  4. Llame a estos explícitamente a través de ./manage.py runserver –settings = settings.dev o ./manage.py runserver –settings = settings.prod

Puede ver un ejemplo de trabajo en el código fuente de Django Packages: https://github.com/opencompariso…, que contiene los módulos base (.py), heroku (.py) y test (.py). Con este patrón, podemos agregar fácilmente otros entornos y realizar un seguimiento de ellos. Por ejemplo, podríamos agregar lo siguiente y tenerlos en el control de origen:

  • gondor (.py)
  • dotcloud (.py)
  • pydanny (.py) (para cuando quiero mis propias configuraciones personalizadas locales, de esta manera se almacenan en el control de origen y las personas pueden ayudarme a diagnosticar problemas con mi configuración)

Pero no solo creas mi palabra.

De hecho, voy a nombrar a Jacob Kaplan-Moss y vincularlo a algunas diapositivas que tiene sobre el tema. Comience en http://www.slideshare.net/jacobi… y siga las diapositivas hasta su conclusión obvia.

Si acaba de comenzar un nuevo proyecto, probablemente encuentre esta publicación de blog del usuario de Quora bastante útil:

http://blog.zacharyvoase.com/201

Cubre configuraciones, diseño de directorio y un montón de cosas prácticas.

Tenemos un entorno muy virtualizado. Dado que nuestros servidores de producción Django son máquinas virtuales, es bastante fácil crear un clon del servidor de producción. ¡Este clon es donde se realiza el desarrollo, y su configuración de servidor web y Django no difiere de la producción de ninguna manera! Solo la dirección IP de la caja y los directorios de inicio de los usuarios pueden diferir.

Una vez que el nuevo código ha sido desarrollado y probado en el clon, verificamos el código fuente nuevamente en Mercurial y lo verificamos en la máquina de producción, luego reiniciamos el servidor web. Nuestro uso de un clon evita la necesidad de hacer malabares con múltiples archivos de configuración.