Alla ricerca delle migliori pratiche SVN durante la creazione di applicazioni Rails su Ubuntu [chiuso]

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

Domanda

Prima un po 'di background.

Ho lavorato sulla piattaforma MS per tutta la mia carriera di sviluppo. Fino a 2 settimane fa, non avevo mai avviato un sistema operativo diverso da 98 / XP / Vista. Ho iniziato a utilizzare VSS molto tempo fa e ho apportato la modifica a SVN circa 2 anni fa. Con SVN utilizzo TortiseSVN e utilizzo l'impostazione standard branch / tag / trunk.

I miei progetti sono anche autonomi, il che significa che posso andare in una nuova casella di sviluppo, aprire un singolo repository, aprire VS, premere F5 e verrà eseguito (la maggior parte del tempo). Tutte le dipendenze sono memorizzate in una cartella lib , il codice sorgente è in una cartella src , ecc ...

Nel tentativo di imparare cose nuove, ho deciso di creare un'applicazione Ruby on Rails e ho creato una macchina di sviluppo basata su Ubuntu. Ho un server SVN attivo e funzionante e sto lavorando con un'altra persona su questo progetto. Sembra che stia usando un Mac per la sua macchina di sviluppo.

E ora per i problemi.

Sembra che stia lottando con come gestire le varie versioni di ruby, rails e tutti i plugin con cui sto lavorando. Sembra anche che stia lottando con l'utilizzo di SVN su Ubuntu.

Quindi Ubuntu viene fornito con Ruby preinstallato. Voglio dire che è la versione 1.8.5. Ad ogni modo, avevo un mucchio di gemme da installare per il plugin che sto usando (Community Engine). Essendo nuovo a * nix, non ho usato sudo durante l'installazione e ho riscontrato problemi di ogni genere. Ho finito col soffiare via Ruby completamente e ricominciare da capo. Sembrava funzionare.

Il problema è che, dopo aver eseguito il commit del mio codice, e l'altro è l'ultimo, deve passare attraverso l'intero processo di installazione delle gemme.

Qual è la migliore pratica per la gestione di gemme e plug-in in un'applicazione RoR? Non mi interessa se un milione di file vengono aggiunti a SVN. Lo spazio su disco e la larghezza di banda della rete sono economici. Semplicemente non so come farlo correttamente.

Quindi su SVN.

Ho installato RapidSVN, ma molto spesso si verificano problemi con le cartelle bloccate. Un paio di volte ho capito il mio errore, altri, non avevo idea del perché. Ma in entrambi gli scenari, non sono riuscito a risolverlo. Ho finito per fare un backup del mio codice, tirando giù una nuova copia di lavoro, quindi spostando manualmente le modifiche ed essendo un po 'più intelligente quando le ho impegnate nel progetto.

In realtà ho RTFM un po 'la scorsa notte e ho scoperto che dovrei creare un segnalibro per i miei repository, quindi fare un "checkout copia funzionante" da quel segnalibro. Non sono sicuro del perché, ma ok, è quello che dice il manuale ...

Quali sono alcune best practice per l'utilizzo di SVN su un progetto RoR su Ubuntu?

Sto letteralmente cercando un processo graduale su questo.

modifica Ho dimenticato di menzionare, utilizzo NetBeans per il mio IDE, anche se non ho cercato di vedere che tipo di supporto SVN ha, se presente. Ho guardato RubyMine e mi piacerebbe usarlo, ma sembra essere troppo instabile in questo momento.

È stato utile?

Soluzione

Per i plug-in, consiglierei di incollarli nella cartella del fornitore e di aggiungerli a SVN come se avessi scritto tu stesso il codice. Anche il pistone è stata un'ottima soluzione, ma si è allontanato da esso quando tutti i plugin comuni hanno iniziato a spostarsi su github (da allora il pistone non è stato affidabile)

Per le gemme, si spera che tu stia usando le rotaie 2 o successive. Dovresti elencare le gemme di cui hai bisogno nel tuo config / environment.rb usando config.gem . Ecco un mucchio di informazioni su quella caratteristica

Ciò significa che se aggiungi una nuova gemma, la prossima volta che il tuo collega aggiorna, la sua app rotaie non si avvia fino a quando non ha le gemme necessarie. Può quindi installarli in un solo passaggio usando sudo rake gems: install

Puoi fare un ulteriore passo avanti e mettere le tue gemme nella directory del fornitore. Questo è comunemente noto come "venditore tutto". Il modo più semplice per farlo è elencare tutte le gemme utilizzate in environment.rb come sopra, quindi eseguire rake gems: unpack . Tuttavia, ci sono 2 problemi con questo approccio, quindi preferisco non usarlo da solo.

  1. Se hai 10 app e ognuna di esse vendono le loro gemme, finisci per conservare 10 copie di gemme comuni in sovversione, il che rende l'aggiornamento di tutti i tuoi siti molto più lento.
    Questo potrebbe non essere un problema per te, o vale la pena sopportarlo, è solo una preferenza personale.

  2. Alcune gemme (come mongrel o hpricot) hanno estensioni native scritte in C. Ciò significa che quando le installi, il codice sorgente .c viene scaricato e gcc viene eseguito per compilarlo appositamente per il tuo sistema.
    Se hai installato un'estensione C nativa su Ubuntu, poi l'hai messa nella cartella del fornitore e in seguito ha provato a eseguirla su OS X (o forse anche una versione diversa di Ubuntu) molto probabilmente si bloccherebbe il tuo processo ruby ??e porta la tua app verso il basso.
    Se tutte le tue gemme sono di puro rubino, questo non è un problema, ma è solo qualcosa di cui essere a conoscenza.

Altri suggerimenti

Molte persone usano piston o desert per gestire plugin e installare gemme nella cartella del fornitore locale Rail (archiviata sotto 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

Consiglio anche di usare geminstaller che ti aiuterà a installare tutte le stesse gemme e le stesse versioni

http://geminstaller.rubyforge.org/

Uso SVN dalla riga di comando ma se tu fossi più a tuo agio con TortiseSVN potresti provare IDE che hanno SVN ben integrato come RadRails e NetBeans. Gli IDE hanno gestori SVN grafici molto simili simili a Tortise, se vuoi lavorare sulla linea cmd basta trovare un semplice tutorial SVN di 10 minuti e dovresti andare bene.

Non ho mai sentito parlare di SVN rapido e il normale strumento SVN ha sempre funzionato solo per trovare con me, quasi mai causando il problema delle cartelle bloccate.

Orion ha menzionato la necessità di ricostruire le gemme che sono state vendute quando le si condividono tra diversi sistemi operativi: è possibile utilizzare le gemme: costruire un'attività di rake per ricostruirle automaticamente.

Per prima cosa, scopri svn dalla riga di comando. Il svn-book è on line. Non è troppo difficile eseguire lo stato svn o svn commit -m " blah " ;. La maggior parte dei problemi si presenta se si utilizzano le funzioni del sistema operativo per eliminare o rinominare i file. Usa i comandi svn per questo.

Quindi, se rapidsvn non funziona per te, prova svn-workbench. Odio dirlo, ma nessuno degli strumenti della GUI di Linux svn che ho visto è buono come tortoisesvn.

Plugin e svn sono un problema. C'è uno strumento chiamato piston che ha lo scopo di chiarirlo, anche se non lo uso. Controllo i plugin nella directory del mio fornitore / plugin. Se esce una nuova versione che voglio davvero, uso il mio fidato script bash update_plugin per aggiornare il plugin:

#!/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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top