control de versiones, Rails y bases de datos, ¿por dónde empezar?

Soy de un background de progtwigción de lenguaje del lado del cliente, específicamente de ActionScript. Así que, aunque soy bastante consciente del código, tengo muy poca experiencia en el lado del server, particularmente el control de versiones de las bases de datos junto con la aplicación de los Rails. Y luego está la línea de command, que es un completo misterio.

En este momento estoy construyendo mi primera aplicación de Rails y se ve bastante bien en mi máquina local. Creo que es hora de que empiece a establecer un control de versiones. La mayoría de los libros tratan sobre el control de versiones, pero parece más complicado que build la aplicación Rails, lo que está ocurriendo bien. Entonces mis preguntas son:

  • ¿Por dónde empezar a aprender esto?
  • ¿Puedo controlar la versión de la database con la aplicación Rails?
  • ¿Esto consume mucho más time y es más complicado build la aplicación de los Rails?

  • Aprendes este tipo de cosas simplemente mirando alnetworkingedor, y probando cosas, no hay sustituto. Otros solo pueden sugerir qué herramienta es la mejor para lo que intenta hacer, pero todos tienen sus propias opiniones, así que … ¡solo hagan eso!

  • Personalmente, no sé cómo controlar la versión de una Base de datos, pero en cuanto a la versión general que controla el código, sugeriría "git" (¡Enlace aquí! ). Es uno de los sistemas de control de versiones más fáciles y populares en todo. Originalmente diseñado por Linus Torvalds, y ahora es mantenido por ….

  • Sí / No, según cómo se defina complicado. Para crear un control de versión para tu código usando "git", inicialmente escribirías

    git init

    en el directory del código. Y para agregar todo el código a git, para decirle que esté atento a los cambios en los files, debe escribir:

    git add *

    y luego para confirmar (save los cambios), debe escribir:

    git commit -m "Escribe lo que has hecho hasta ahora"

    Y eso es prácticamente todo, debes repetir los dos últimos pasos para agregar y save tus cambios a medida que desarrollas tu código. Entonces, si ha hecho algo mal con su código, todo lo que tiene que hacer es mirar hacia atrás en sus "commits" y decidir dónde desea retroceder.

    Así que Yea git es bastante increíble, hay otros pero no es tan agradable en mi opinión. Ellos son: SVN, CVS.

Volviendo a la versión que controla su database, ¿Por qué quiere hacer eso? Rails tiene incorporado un control de versión de la database, cada vez que cambia el esquema de su database, se graba, por lo que si hace algo mal, ¡siempre puede revertir! ¿Quiso decir hacer una copy de security de su Base de Datos? Porque si es MySQL, siempre puedes exportarlo en xml, ¡y controlar la versión del file xml!

Obtener un sistema de control de versiones como Subversion o Git es la parte fácil.

La parte difícil es descubrir cómo hacer que todo funcione con una database. No es exactamente lo mismo que el código.

Por ejemplo, ¿archivará también el historial o los datos del esquema también? (Probablemente el primero, pero nunca se sabe.) ¿Cómo se administrará la carga de datos (por ejemplo, para escenarios de testing)?

Scott Ambler y Pramod Sadalange han trabajado en el event handling bases de datos ágiles . Recomiendan crear scripts de todos los cambios de esquema y aplicarlos en order para llevar un esquema a una versión particular. Tal vez este es un buen lugar para comenzar.

Si estás interesado en el control de versiones, generalmente los chicos de PragProg tienen varios libros sobre Subversion y Git ( http://www.pragprog.com ), fíjate si quieres configurar tu propio repository. El libro de subversión también está disponible como descarga gratuita ( http://svnbook.networking-bean.com/ ). Eso le dará la capacidad de mantener su código en un sistema de control de versiones (algo de lo que yo no estaría ni siquiera para proyectos personales). Si no desea crear una administración de su propio sistema de control de versiones, entonces hay opciones alojadas disponibles.

En cuanto a la configuration de la database. Las migraciones son el path a seguir, pero es posible que le resulte más fácil usar una migration por tabla (es decir, edite la migration que tiene en lugar de crear nuevas para cada cambio). De esta forma puede rastrear todos los cambios de la tabla en un solo lugar. No es la forma tradicional de build cosas en Rails, pero tiene algunas ventajas.

Un problema que todavía tiene que administrar es la información en la database. Si se activa y decide deshacer su database, perderá todos sus datos, por lo tanto, invierta en una herramienta de copy de security / restauración para la database.

Una vez que tenga el control de la versión en su lugar, generalmente es fácil de usar y administrar. Si está utilizando un IDE, probablemente tenga integración en su sistema de control de versiones (especialmente si está utilizando SubVersion).

Eche un vistazo a las migraciones .

No sé si necesitas versionar la database con git, y si lo haces, el repository será bastante grande. Me gustaría simplemente periódicamente volcar y descomprimir la database que puede save para reference futura. El esquema de su aplicación debe estar seguro en el control de su versión, y eso junto con sus volcados de db, debería estar bien.

Si ha estado codificando por un time sin control de fuente. DETENER. Aprende sobre el control de algunas versiones, saveá tu trasero un día. Ruby, ActionScript, lo que sea que estés escribiendo, lo pongas en git o lo que elijas usar, serás mejor para ello. Tengo un check in o dos antes incluso de haber escrito mi propio código, ya que agrego el par de complementos, etc. que necesito.

Check in early, check-in a menudo, la misma filosofía que la versión de lanzamiento temprano a menudo. Cuantas más cosas verifique en los puntos a los que tiene que retroceder si lo necesita, y también mejor puede revisar su progreso, ya sea hacia su lanzamiento o su desarrollo como codificador.