RPM Package um projeto ruby

4

Eu quero empacotar um programa ruby que recebo do git em um pacote RPM. Eu tenho à minha disposição um servidor de compilação e um servidor de produção (Same OS / Same Arch).

Como a maioria dos projetos ruby, o meu tem dependências de gem.

Eu encontrei duas maneiras de fazer o que eu quero e gostaria de saber qual é a melhor filosofia - a maioria das unix / linux - operações sábias

  • Agrupar menos no servidor de produção

O primeiro (que parece melhor para mim) é fazer um bundle install --standalone --deployment --path %{buildroot}/usr/lib/rubygems/1.8/gems/ --binstubs %{buildroot}/usr/lib/rubygems/1.8.bin . Isso instalará a gem no caminho do sistema gem no servidor em que o .rpm será implantado, sem necessidade de instalar o bundle. Onde não tenho certeza, é quando vou instalar outras rpm com as mesmas gemas que vai acontecer? O que aconteceu quando eu removi um pacote com uma gema compartilhada entre dois pacotes?

  • Com o pacote no servidor de produção

O comando bundle install --deployment ocorreria diretamente no projeto em si. Dessa forma, tudo pode ser encontrado no diretório vendor/ . On-line, eu pude ver um post sobre a política do fornecedor e tudo, isso não parece certo, já que muitas pedras preciosas serão duplicadas. Desde que eu não tenho um fundo de rubi eu não sei exatamente os prós / contras que podem ter

Se alguém já fez algo parecido, como você está? O que - operações sábias - é a melhor maneira de entender isso?

    
por Spredzy 05.03.2013 / 22:31

1 resposta

2

Não implemente uma gem com o RPM, a menos que você implemente todas as gemas dependentes com o RPM também. Veja as Diretrizes de Embalagem do Fedora para Ruby para obter informações sobre a maneira correta de construir um RPM e um arquivo de amostra para criar gemas, e também como criar um RPM para seu aplicativo da Web Rails.

Se você precisar fazer algo que quebre as melhores práticas de RPM, é melhor que você não use o RPM para implantar . Use ferramentas focadas na implantação, como capistrano; ele pode verificar automaticamente seu aplicativo no git e implantá-lo corretamente (depois de configurá-lo).

    
por 06.03.2013 / 05:30