Pergunta

Primeiro um pouco de fundo.

Eu tenho trabalhado na plataforma MS para toda a minha carreira de desenvolvimento. Até 2 semanas atrás, eu nunca tinha iniciado qualquer outro sistema operacional de 98 / XP / Vista. Comecei a usar VSS muito tempo atrás, e fez a mudança para SVN cerca de 2 anos. Com SVN Eu uso TortiseSVN e usar a tag configuração padrão ramo / / trunk.

Meus projetos são também auto-contido, o que significa que eu posso ir para uma caixa fresca dev, puxar para baixo um único repositório, aberto VS, pressione F5 e ele será executado (na maioria das vezes). Todas as dependências são armazenadas em uma pasta lib, o código fonte está em uma pasta src, etc ...

Em um esforço para aprender coisas novas, eu decidi criar um aplicativo Ruby on Rails e criaram uma máquina de desenvolvimento com base Ubuntu. Eu tenho um servidor SVN funcionando e estou trabalhando com outra pessoa neste projeto. Ele passa a ser usando um Mac para a sua máquina de desenvolvimento.

E agora para as questões.

Parece que estou lutando com a forma de gerir as várias versões do Ruby, Rails e todos do plugin é que eu estou trabalhando. Eu também parecem estar lutando com o uso de SVN no Ubuntu.

Assim Ubuntu vem com Ruby pré-instalado. Quero dizer que é a versão 1.8.5. De qualquer maneira, eu tinha um monte de pedras preciosas para instalar para o plugin que estou usando (Mecanismo Comunitário). Sendo novo para * nix, eu não uso sudo quando instalá-los e correu para todos os tipos de questões. Eu acabei explodindo Rubi completamente e começando do zero. Que parecia trabalho.

O problema é, porém, que depois que eu entrego o meu código, eo outro cara fica mais recente, ele tem que passar por todo o processo de instalação de pedras preciosas.

O que é a melhor prática para gerenciamento de gemas e plug-ins em um aplicativo de RoR? Eu não me importo se um arquivos zilhão são adicionados ao SVN. Espaço em disco e largura de banda são baratos. Eu só não sei como fazer isso corretamente.

Assim, para SVN.

Eu instalei RapidSVN, mas muito freqüentemente esbarram em questões com pastas ficar trancado. Um par de vezes que eu percebi o meu erro, outros, eu não tinha idéia de por quê. Mas em ambos os cenários, eu não poderia consertá-lo. Acabei fazendo um backup do meu código, puxando para baixo uma nova cópia de trabalho, em seguida, manualmente movendo-se sobre as mudanças e ser um pouco mais esperto quando cometê-los ao projeto.

Na verdade, eu RTFM um pouco na noite passada e descobriu que eu deveria criar um marcador para os meus repos, em seguida, fazer um "check-out cópia de trabalho" a partir desse marcador. Eu não sei por que, mas ok, isso é o que diz o manual ...

O que são algumas das melhores práticas para o uso de SVN em um projeto RoR no Ubuntu?

Eu estou literalmente à procura de um processo passo a passo em um presente.

editar Eu esqueci de mencionar, eu uso o NetBeans IDE para o meu, embora eu não olhei para ver que tipo de SVN apoio que tem, se houver. Olhei para RubyMine, e gostaria de usá-lo, mas parece estar certo muito instável agora.

Foi útil?

Solução

Para plugins, eu, pessoalmente, recomendo apenas furando-los na pasta fornecedor e adicioná-los ao SVN como se você tivesse escrito o código você mesmo. Piston foi também uma grande solução, mas trocou longe dele quando todos os plugins comuns começaram a se mover para github (pistão tem sido confiável desde então)

Para gemas, espero que você está usando rails 2 ou superior. Você deve estar listando as jóias que você precisa em sua config/environment.rb usando config.gem. Aqui é um monte de informações sobre esse recurso

O que isto significa é que se você adicionar uma nova jóia, da próxima vez que suas atualizações colega de trabalho, sua aplicação rails não vai boot até que ele tem as gemas necessário. Ele pode, em seguida, instalá-los em uma única etapa usando sudo rake gems:install

Você pode dar um passo mais longe, e colocar suas jóias no diretório fornecedor. Isto é comumente conhecido como "fornecedor de tudo." A maneira mais fácil de fazer isso é listar todas as jóias que você usa em environment.rb como acima, e rake gems:unpack em seguida, executar. Existem 2 problemas com esta abordagem, no entanto, por isso prefiro não usá-lo eu mesmo.

  1. Se você tem 10 aplicativos e eles cada fornecedor suas gemas, você acaba mantendo 10 cópias de jóias comuns em subversão, o que torna a atualização de todos os seus sites muito mais lento.
    Isto pode não ser um problema para você, ou pode valer a pena aturar, é apenas uma preferência pessoal.

  2. Algumas pérolas (como mestiço ou hpricot) têm extensões nativas escrito em C. O que isto significa é que quando você instalá-los, o código fonte .c é baixado, e gcc é executado para compilá-lo especificamente para o seu sistema .
    Se você instalou uma extensão nativa C no ubuntu, em seguida, colocá-lo na pasta de fornecedor, e mais tarde tentou correr que no OS X (ou possivelmente até mesmo uma versão diferente do ubuntu) seria mais provável travar o seu processo de rubi e trazer o seu aplicativo para baixo.
    Se todas as suas jóias são puros-rubi, então este não é um problema, mas é apenas algo a ter em conta.

Outras dicas

Muitas pessoas usam pistão ou deserto para gerenciar plugins e instalar pedras preciosas para a pasta ferroviário local fornecedor (armazenada sob 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

Eu também recomendo o uso geminstaller que irá ajudá-lo tanto instalar as mesmas gemas e as mesmas versões deles

http://geminstaller.rubyforge.org/

Eu uso o SVN a partir da linha de comando, mas se você fosse mais confortável com TortiseSVN que você pode querer tentar IDEs que têm SVN bem integrados como RadRails e NetBeans. Os IDEs têm gestores SVN gráficas muito semelhantes semelhantes a Tortise, se você quer trabalhar na linha cmd apenas encontrar um simples 10 minutos SVN tutorial e você deve ser bom para ir.

Eu nunca ouvi falar de uma rápida SVN ea ferramenta SVN normal, sempre trabalhou apenas encontrar comigo, raramente causando o problema pastas de bloqueio.

Orion referiram que tiveram de reconstruir gemas que foram vendorizadas quando compartilhá-los entre diferentes OS de - você pode usar as pedras preciosas: tarefa rake de construção para reconstruir-los automaticamente

.

Em primeiro lugar, descobrir svn na linha de comando. A svn-book está em linha. Não é muito difícil de fazer svn status ou SVN commit -m "blah". A maioria dos problemas vêm se você usar as funções do sistema operacional para apagar ou renomear arquivos. Use os comandos SVN para isso.

Em seguida, se rapidsvn não está funcionando para você, tente svn-bancada. Odeio dizer isso, mas nenhum dos linux svn GUI ferramentas que eu vi são tão bons quanto tortoisesvn.

Plugins e svn são um problema. Há uma ferramenta chamada pistão que visa esclarecer isso, embora eu não usá-lo. I confira os plugins em meu vendor / plugins diretório. Se uma nova versão sai que eu realmente quero, eu uso o meu script update_plugin festa fiel para atualizar o 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top