Pregunta

Primero un poco de historia.

He trabajado en la plataforma MS durante toda mi carrera de desarrollo. Hasta hace 2 semanas, nunca había arrancado ningún otro sistema operativo que no fuera 98 / XP / Vista. Empecé a usar VSS hace mucho tiempo, e hice el cambio a SVN hace aproximadamente 2 años. Con SVN, uso TortiseSVN y uso la configuración estándar de rama / etiqueta / tronco.

Mis proyectos también son independientes, lo que significa que puedo ir a un nuevo cuadro de desarrollo, desplegar un único repositorio, abrir VS, presionar F5 y se ejecutará (la mayoría de las veces). Todas las dependencias se almacenan en una carpeta lib , el código fuente está en una carpeta src , etc ...

En un esfuerzo por aprender cosas nuevas, he decidido construir una aplicación Ruby on Rails y he creado una máquina de desarrollo basada en Ubuntu. Tengo un servidor SVN en funcionamiento y estoy trabajando con otra persona en este proyecto. Está usando una Mac para su máquina de desarrollo.

Y ahora para los problemas.

Parece que estoy luchando con la forma de administrar las diversas versiones de ruby, rails y todos los complementos con los que estoy trabajando. También parece estar luchando con el uso de SVN en Ubuntu.

Entonces Ubuntu viene con Ruby preinstalado. Quiero decir que es la versión 1.8.5. De cualquier manera, tenía que instalar un montón de gemas para el complemento que estoy usando (Community Engine). Al ser nuevo en * nix, no utilicé sudo al instalarlos y me encontré con todo tipo de problemas. Terminé haciendo volar a Ruby completamente y comenzando de nuevo. Eso pareció funcionar.

Sin embargo, el problema es que después de que confirme mi código, y el otro tipo tenga la última versión, tiene que pasar por todo el proceso de instalación de gemas.

¿Cuál es la mejor práctica para administrar gemas y complementos en una aplicación RoR? No me importa si se agregan un millón de archivos a SVN. El espacio en disco y el ancho de banda de la red son baratos. Simplemente no sé cómo hacer esto correctamente.

Entonces a SVN.

He instalado RapidSVN, pero con frecuencia encuentro problemas con el bloqueo de carpetas. Un par de veces me di cuenta de mi error, otras, no tenía idea de por qué. Pero en ambos escenarios, no pude arreglarlo. Terminé haciendo una copia de seguridad de mi código, bajando una nueva copia de trabajo, luego moviéndome manualmente sobre los cambios y siendo un poco más inteligente al comprometerlos en el proyecto.

De hecho, anoche RTFM y descubrí que se suponía que debía crear un marcador para mis repositorios, y luego hacer una "copia de trabajo de pago". de ese marcador. No estoy seguro de por qué, pero bueno, eso es lo que dice el manual ...

¿Cuáles son algunas de las mejores prácticas para usar SVN en un proyecto RoR en Ubuntu?

Estoy literalmente buscando un proceso paso a paso en este.

editar Olvidé mencionar que uso NetBeans para mi IDE, aunque no he buscado ver qué tipo de soporte SVN tiene, si es que tiene alguno. Miré a RubyMine y me encantaría usarlo, pero parece ser demasiado inestable en este momento.

¿Fue útil?

Solución

Para complementos, personalmente recomendaría simplemente pegarlos en la carpeta del proveedor y agregarlos a SVN como si hubiera escrito el código usted mismo. Piston también fue una gran solución, pero se apartó de él cuando todos los complementos comunes comenzaron a moverse a Github (el pistón no ha sido confiable desde entonces)

Para gemas, con suerte estás usando rieles 2 o superiores. Debería enumerar las gemas que necesita en su config / environment.rb utilizando config.gem . Aquí hay un montón de información sobre esa característica

Lo que esto significa es que si agrega una nueva gema, la próxima vez que su compañero de trabajo actualice, su aplicación de rieles no arrancará hasta que tenga las gemas necesarias. Luego puede instalarlos en un solo paso usando sudo rake gems: install

Puede ir un paso más allá y colocar sus gemas en el directorio de proveedores. Esto se conoce comúnmente como "todo vendedor". La forma más fácil de hacer esto es enumerar todas las gemas que usa en environment.rb como se indica arriba, y luego ejecutar rake gems: unpack . Sin embargo, hay 2 problemas con este enfoque, por lo que prefiero no usarlo yo mismo.

  1. Si tienes 10 aplicaciones y cada una de ellas vende sus gemas, terminas manteniendo 10 copias de gemas comunes en subversion, lo que hace que la actualización de todos tus sitios sea mucho más lenta.
    Esto puede no ser un problema para usted, o puede valer la pena soportarlo, es solo una preferencia personal.

  2. Algunas gemas (como mongrel o hpricot) tienen extensiones nativas escritas en C. Lo que esto significa es que cuando las instala, se descarga el código fuente .c y gcc se ejecuta para compilarlo específicamente para su sistema.
    Si instaló una extensión C nativa en ubuntu, luego póngala en la carpeta del proveedor y luego intente ejecutarla en OS X (o incluso posiblemente en una versión diferente de ubuntu) lo más probable es que bloquee su proceso de ruby ??y traiga su aplicación abajo.
    Si todas tus gemas son de rubí puro, entonces esto no es un problema, pero es algo a tener en cuenta.

Otros consejos

Muchas personas usan pistón o desierto para administrar complementos e instalar gemas en la carpeta del proveedor local de Rail (almacenada en SVN).

http://www.rubyinside.com/advent2006/12-piston.html http: // pivotallabs.com/users/brian/blog/articles/459-build-your-own-rails-plugin-platform-with-desert

También recomiendo usar geminstaller, que le ayudará a instalar las mismas gemas y las mismas versiones

http://geminstaller.rubyforge.org/

Utilizo SVN desde la línea de comandos, pero si te sientes más cómodo con TortiseSVN, quizás quieras probar IDE que tengan SVN muy bien integrados como RadRails y NetBeans. Los IDE tienen gestores gráficos SVN muy similares a Tortise, si desea trabajar en la línea cmd solo busque un sencillo tutorial SVN de 10 minutos y debería estar listo.

Nunca he oído hablar de SVN rápido y la herramienta SVN normal siempre ha funcionado, solo encuentra conmigo, casi nunca causa el problema de bloqueo de carpetas.

Orión mencionó la necesidad de reconstruir gemas que se han vendido al compartirlas entre diferentes sistemas operativos; puede usar la tarea gemas: construir rastrillo para reconstruirlas automáticamente.

Primero, descubra svn desde la línea de comando. El svn-book está en línea. No es demasiado difícil hacer svn status o svn commit -m " blah " ;. La mayoría de los problemas surgen si usa las funciones del sistema operativo para eliminar o cambiar el nombre de los archivos. Use los comandos svn para eso.

A continuación, si rapidsvn no funciona para usted, pruebe svn-workbench. Odio decirlo, pero ninguna de las herramientas de interfaz gráfica de usuario de Linux que he visto son tan buenas como las tortugas.

Los complementos y svn son un problema. Hay una herramienta llamada piston que tiene como objetivo aclarar eso, aunque no lo uso. Reviso los complementos en mi directorio de proveedores / complementos. Si sale una nueva versión que realmente quiero, utilizo mi script de confianza update_plugin bash para actualizar el complemento:

#!/bin/bash

#  reinstall the plugin in an svn friendly way
plugin="some_plugin"
plugin_url="http://some_server/some_plugin/trunk"

for f in site1 site2 site3
do
  echo $f
  cd ~/rails/$f

  svn delete vendor/plugins/$plugin
  rm -rf vendor/plugins/$plugin
  svn -m "remove $plugin" commit
  script/plugin install $plugin_url
  svn add vendor/plugins/$plugin
  svn -m "add $plugin" commit

done
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top