Recherche des meilleures pratiques SVN lors de la construction d'applications Rails sur Ubuntu [fermé]

StackOverflow https://stackoverflow.com/questions/284732

Question

Tout d'abord, un peu d'arrière-plan.

Je travaille sur la plate-forme MS pendant toute ma carrière de développement. Jusqu'à il y a deux semaines, je n'avais jamais démarré d'autre système d'exploitation que 98 / XP / Vista. J'ai commencé à utiliser VSS il y a longtemps et j'ai changé de nom pour SVN il y a environ 2 ans. Avec SVN, j'utilise TortiseSVN et la configuration standard branche / tag / trunk.

Mes projets sont également autonomes, ce qui signifie que je peux accéder à une nouvelle boîte de développement, créer un seul référentiel, ouvrir un VS, appuyer sur F5 et le lancer (la plupart du temps). Toutes les dépendances sont stockées dans un dossier lib , le code source se trouvant dans un dossier src , etc ...

Dans un effort pour apprendre de nouvelles choses, j'ai décidé de créer une application Ruby on Rails et de créer une machine de développement basée sur Ubuntu. J'ai un serveur SVN opérationnel et je travaille avec une autre personne sur ce projet. Il se trouve qu’il utilise un Mac pour sa machine de développement.

Et maintenant, pour les problèmes.

Je semble avoir du mal à gérer les différentes versions de ruby, de rails et de tous les plugins avec lesquels je travaille. Je semble également avoir du mal à utiliser SVN sur Ubuntu.

Donc, Ubuntu est livré avec Ruby pré-installé. Je veux dire que c'est la version 1.8.5. Quoi qu'il en soit, j'avais un tas de gemmes à installer pour le plug-in que j'utilise (Community Engine). Etant nouveau dans * nix, je n’ai pas utilisé sudo lors de leur installation et je me suis heurté à toutes sortes de problèmes. J'ai fini par souffler Ruby complètement et repartir à zéro. Cela semblait marcher.

Cependant, le problème est qu’après avoir validé mon code et que l’autre type soit au courant, il doit suivre l’ensemble du processus d’installation de gems.

Quelle est la meilleure pratique de gestion des gems et des plug-ins dans une application RoR? Je me moque de savoir si un million de fichiers sont ajoutés à SVN. L'espace disque et la bande passante réseau sont peu coûteux. Je ne sais tout simplement pas comment faire cela correctement.

Passons à SVN.

J'ai installé RapidSVN, mais je rencontre très souvent des problèmes de verrouillage des dossiers. Quelques fois, j'ai réalisé mon erreur, d'autres, je ne savais pas pourquoi. Mais dans les deux scénarios, je ne pouvais pas le réparer. J'ai fini par faire une copie de sauvegarde de mon code, en extrayant une nouvelle copie de travail, puis en déplaçant manuellement les modifications et en étant un peu plus intelligent lors de leur validation dans le projet.

En fait, je suis un peu RTFM la nuit dernière et j’ai découvert que je devais créer un signet pour mon dépôt, puis faire une "copie de travail à la caisse". à partir de ce signet. Je ne sais pas pourquoi, mais bon, c'est ce que dit le manuel ...

Quelles sont les meilleures pratiques d'utilisation de SVN sur un projet RoR sous Ubuntu?

Je recherche littéralement un processus étape par étape pour celui-ci.

modifier J'ai oublié de mentionner que j'utilise NetBeans pour mon IDE, bien que je n'aie pas cherché à savoir quel type de support SVN il a, le cas échéant. J'ai jeté un œil sur RubyMine et j'adorerais l'utiliser, mais cela semble trop instable pour le moment.

Était-ce utile?

La solution

Pour les plugins, je recommande personnellement de les coller dans le dossier du fournisseur et de les ajouter à SVN comme si vous aviez écrit le code vous-même. Piston était également une excellente solution, mais l’a abandonné lorsque tous les plugins communs ont commencé à migrer vers github (le piston n’était plus fiable depuis).

Pour les pierres précieuses, j'espère que vous utilisez les rails 2 ou plus. Vous devriez répertorier les gems dont vous avez besoin dans votre config / environment.rb en utilisant config.gem . Voici un tas d'informations sur cette fonctionnalité

Cela signifie que si vous ajoutez un nouveau joyau, lors de la prochaine mise à jour de votre collègue, son application rails ne démarrera pas tant qu'il n'aura pas les joyaux nécessaires. Il peut ensuite les installer en une étape à l’aide de sudo rake gems: install

Vous pouvez aller plus loin et placer vos gemmes dans le répertoire du fournisseur. C'est ce que l'on appelle communément "tout ce qui est fournisseur". La méthode la plus simple consiste à répertorier tous les gems utilisés dans environment.rb comme ci-dessus, puis à exécuter rake gems: unpack . Cependant, cette approche pose deux problèmes et je préfère donc ne pas l’utiliser moi-même.

  1. Si vous avez 10 applications et que chacune d'elles vend ses gemmes, vous gardez 10 copies des gemmes communes dans Subversion, ce qui ralentit considérablement la mise à jour de tous vos sites.
    Cela peut ne pas être un problème pour vous, ou peut-être la peine de le supporter, c'est juste une préférence personnelle.

  2. Certaines gemmes (telles que mongrel ou hpricot) ont des extensions natives écrites en C. Cela signifie que lorsque vous les installez, le code source .c est téléchargé et gcc est lancé pour le compiler spécifiquement pour votre système.
    Si vous avez installé une extension C native sur ubuntu, placez-la dans le dossier du fournisseur et essayez plus tard de l'exécuter sous OS X (ou même éventuellement avec une version différente d'ubuntu), il y a de fortes chances que votre processus ruby ??se bloque et que votre application se bloque. vers le bas.
    Si toutes vos pierres précieuses sont des rubis purs, alors ce n’est pas un problème, mais vous devez en prendre conscience.

Autres conseils

De nombreuses personnes utilisent piston ou desert pour gérer les plugins et installer des gems dans le dossier du fournisseur local de Rail (stocké sous 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

Je recommande également l'utilisation de geminstaller, qui vous aidera à installer les mêmes gemmes et leurs versions

http://geminstaller.rubyforge.org/

J'utilise SVN depuis la ligne de commande, mais si vous étiez plus à l'aise avec TortiseSVN, vous voudrez peut-être essayer des IDE avec SVN bien intégrés, comme RadRails et NetBeans. Les IDE ont des gestionnaires SVN graphiques très similaires, similaires à Tortise. Si vous voulez travailler sur la ligne de commande, trouvez un simple tutoriel SVN de 10 minutes et vous devriez être prêt à partir.

Je n'ai jamais entendu parler de SVN rapide et l'outil SVN habituel a toujours fonctionné, il n'y a pratiquement jamais eu de problème avec le verrouillage des dossiers.

Orion a mentionné la nécessité de reconstruire les gemmes vendues lors du partage entre différents systèmes d'exploitation. Vous pouvez utiliser la tâche gems: build rake pour les reconstruire automatiquement.

D'abord, déterminez svn à partir de la ligne de commande. Le svn-book est en ligne. Ce n'est pas trop difficile de faire svn status ou svn commit -m "blah". La plupart des problèmes surviennent si vous utilisez des fonctions du système d'exploitation pour supprimer ou renommer des fichiers. Utilisez les commandes svn pour cela.

Ensuite, si rapidsvn ne fonctionne pas pour vous, essayez svn-workbench. Je suis désolé de le dire, mais aucun des outils d’interface graphique Linux svn que j’ai vus n’est aussi bon que des tortoisesvn.

Les plugins et svn sont un problème. Il existe un outil appelé piston qui vise à clarifier cette situation, bien que je ne l'utilise pas. Je vérifie les plugins dans mon répertoire vendor / plugins. Si une nouvelle version apparaît que je souhaite vraiment, j'utilise mon fidèle script update_plugin bash pour mettre à jour le plug-in:

#!/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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top