pode empacotador ser usado em implantações rsyn

Pode implantar um aplicativo Rails3 usando o Gemfile do Bundler SEM executarbundle install ... ou seja, apenas copiando um diretório do projeto rails para o diretório apropriado no Apache / Passenge

Então, temos um ambiente legado que foi projetado para projetos internos durante o período Ruby1.8.6 / Rails2 e depende da cópia do diretório local do rails para uma montagem de rede no Apache / Passenger. Embora esse modelo de implantação tenha funcionado bem no Rails2 (com gemas congeladas etc.), ele quebra de muitas maneiras dolorosas no Rails3 com Bundle

Especificamente, estou vendo erros de dependência de gemas para gems em: test e: groups de desenvolvimento, mesmo ao implantar em: produção. Eu achei a seguinte postagem SO útil no começo:

bundler tentando instalar incorretamente as gemas do grupo "development" e "test" na produção

Então eu executeibundle install --without test development no meu local e tentei copiar manualmente .bundle / config do meu diretório para o diretório de rede, mas isso não funcionou. O Bundler ainda tentou carregar as gemas excluídas.

Isso é doloroso para nós, porque não temos privilégios de administrador para instalar gemas nesses servidores (ou seja, nunca é permitido executarbundle install em qualquer forma). Da mesma forma, os administradores não querem se preocupar em implantar nossos aplicativos a cada 5 minutos, já que este é um site de prototipagem interno e não um site de produção externo. Eles também não querem correrbundle install porque eles querem um controle rígido de quais gemas são implantadas em todos os aplicativos - por exemplo, alguns aplicativos ainda são baseados no Rails2 e ainda não usam o Bundler; portanto, eles podem quebrar se a gema errada estiver instalad

Existe alguma maneira de usar o Bundler de maneira passiva / rsync ou devemos redesenhar nosso ambiente para permitir que os desenvolvedores executembundle install via capistrano ou algo assim?

Socorro

Obrigado

ATUALIZAR 18/01/2012: Depois de investigar um pouco mais o motivo dos erros: test e: development group, eu descoberto que o Phusion Passenger realmente executaBundle.setup() antes que o aplicativo Rails tenha a chance de entrar emboot.rb. Sem argumentos,setup() verifica todas as dependências de gemas, o que significa que, se não encontrar uma gema no servidor, ela explodirá no Passenger antes mesmo de ter a chance de carregar o Rail

Este 'bug' específico só pode acontecer se você implantar via rsync ou copiar em vez de executarbundle install --without test:development no servidor de destino. A maioria dos aplicativos Rails3 é implantada com o Capistrano, o que faz essa etapa para você e, como tal, nunca encontra esse caso específic

Então, receio que a única maneira de fazer com que os 'grupos' funcionem corretamente no seu arquivo gem é usarbundle install como pretendido. Isso significa que devemos mudar nosso processo de implantação!

questionAnswers(3)

yourAnswerToTheQuestion