Red Hat Training

A Red Hat training course is available for RHEL 8

4.6.3.2. RubyGems SPEC exemplo de arquivo

Esta seção fornece um arquivo SPEC de exemplo para a construção de gemas, juntamente com uma explicação de suas seções particulares.

Um exemplo de arquivo SPEC RubyGems

%prep
%setup -q -n  %{gem_name}-%{version}

# Modify the gemspec if necessary
# Also apply patches to code if necessary
%patch0 -p1

%build
# Create the gem as gem install only works on a gem file
gem build ../%{gem_name}-%{version}.gemspec

# %%gem_install compiles any C extensions and installs the gem into ./%%gem_dir
# by default, so that we can move it into the buildroot in %%install
%gem_install

%install
mkdir -p %{buildroot}%{gem_dir}
cp -a ./%{gem_dir}/* %{buildroot}%{gem_dir}/

# If there were programs installed:
mkdir -p %{buildroot}%{_bindir}
cp -a ./%{_bindir}/* %{buildroot}%{_bindir}

# If there are C extensions, copy them to the extdir.
mkdir -p %{buildroot}%{gem_extdir_mri}
cp -a .%{gem_extdir_mri}/{gem.build_complete,*.so} %{buildroot}%{gem_extdir_mri}/

A tabela a seguir explica as especificidades de itens específicos em um arquivo da RubyGems SPEC:

Tabela 4.4. As diretrizes específicas da SPEC da RubyGems

Diretriz SPECRubyGems específicos

%prep

O RPM pode desempacotar diretamente os arquivos de gemas, para que você possa executar o comando gem unpack para extrair a fonte da gema. A macro %setup -n %{gem_name}-%{version} fornece o diretório no qual a gema foi desempacotada. No mesmo nível de diretório, o arquivo %{gem_name}-%{version}.gemspec é criado automaticamente, o qual pode ser usado para reconstruir a gema mais tarde, para modificar o .gemspec, ou para aplicar correções ao código.

%build

Esta diretiva inclui comandos ou séries de comandos para construir o software em código de máquina. A macro %gem_install opera somente em arquivos de gemas, e a gema é recriada com a próxima construção de gema. O arquivo gem que é criado é então usado por %gem_install para construir e instalar o código no diretório temporário, que é ./%{gem_dir} por padrão. A macro %gem_install tanto constrói como instala o código em uma única etapa. Antes de serem instalados, os fontes construídos são colocados em um diretório temporário que é criado automaticamente.

A macro %gem_install aceita duas opções adicionais: -n <gem_file>, que permite anular a gema usada para instalação, e -d <install_dir>, que pode anular o destino da instalação da gema; não é recomendável usar esta opção.

A macro %gem_install não deve ser utilizada para instalar no %{buildroot}.

%instalar

A instalação é realizada dentro da hierarquia %{buildroot}. Você pode criar os diretórios que precisa e depois copiar o que foi instalado nos diretórios temporários para a hierarquia %{buildroot}. Se esta jóia cria objetos compartilhados, eles são movidos para o caminho específico da arquitetura %{gem_extdir_mri}.

Para mais informações sobre os arquivos SPEC da RubyGems, consulte as Diretrizes de embalagem Ruby.