

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Uso do CodeArtifact com Ruby
<a name="using-ruby"></a>

Estes tópicos descrevem como usar as ferramentas RubyGems e Bundler com o CodeArtifact para instalar e publicar gems Ruby.

**nota**  
O CodeArtifact recomenda o Ruby 3.3 ou posterior e não funciona com o Ruby 2.6 ou anterior.

**Topics**
+ [Configurar e usar o RubyGems e o Bundler](configure-use-rubygems-bundler.md)
+ [Suporte para comandos RubyGems](ruby-command-support.md)
+ [Compatibilidade do Bundler](bundler-compatibility.md)

# Configurar e usar o RubyGems e o Bundler com o CodeArtifact
<a name="configure-use-rubygems-bundler"></a>

Depois de criar um repositório no CodeArtifact, você pode usar o RubyGems (`gem`) e o Bundler (`bundle`) para instalar e publicar gems. Este tópico descreve como configurar os gerenciadores de pacotes para autenticação e usar um repositório do CodeArtifact.

## Configurar o RubyGems (`gem`) e o Bundler (`bundle`) com o CodeArtifact
<a name="configure-ruby-gem"></a>

Para usar o RubyGems (`gem`) ou o Bundler (`bundle`) para publicar gems ou consumir gems por meio do AWS CodeArtifact, primeiro você precisa configurá-los com as informações do repositório do CodeArtifact, incluindo credenciais para acessá-lo. Siga as etapas em um dos procedimentos a seguir para configurar as ferramentas da CLI `gem` e `bundle` com as suas credenciais e as informações do endpoint do repositório do CodeArtifact.

### Configurar o RubyGems e o Bundler usando as instruções do console
<a name="configure-ruby-gem-console"></a>

Você pode usar as instruções de configuração no console para conectar os gerenciadores de pacotes Ruby ao repositório do CodeArtifact. As instruções do console fornecem comandos personalizados que você pode executar para configurar os gerenciadores de pacotes sem precisar encontrar e preencher as informações do CodeArtifact.

1. Abra o console do AWS CodeArtifact em [https://console.aws.amazon.com/codesuite/codeartifact/home](https://console.aws.amazon.com/codesuite/codeartifact/home).

1. No painel de navegação, selecione **Repositórios** e escolha o repositório que deseja usar para instalar ou enviar gems Ruby.

1. Clique em **Visualizar instruções de conexão**.

1. Selecione o seu sistema operacional.

1. Escolha o cliente gerenciador de pacotes Ruby que você deseja configurar com o repositório do CodeArtifact.

1. Siga as instruções geradas para configurar o cliente gerenciador de pacotes para instalar gems Ruby ou publicar gems Ruby no repositório.

### Configurar o RubyGems e o Bundler manualmente
<a name="configure-ruby-gem-manual"></a>

Se você não puder ou não quiser usar as instruções de configuração do console, poderá usar as instruções a seguir para conectar manualmente os gerenciadores de pacotes Ruby ao seu repositório do CodeArtifact. 

1. Em uma linha de comando, use o comando a seguir para buscar o token de autorização do CodeArtifact e armazená-lo em uma variável de ambiente.
   + Substitua *my\$1domain* pelo seu nome de domínio do CodeArtifact.
   + Substitua *111122223333* pelo ID da conta da AWS do proprietário do domínio. Se você estiver acessando um repositório em um domínio de sua propriedade, não será necessário incluir `--domain-owner`. Para obter mais informações, consulte [Domínios entre contas](domain-overview.md#domain-overview-cross-account).

------
#### [ macOS and Linux ]

   ```
   export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text`
   ```

------
#### [ Windows ]
   + Windows (usando o shell de comando padrão):

     ```
     for /f %i in ('aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text') do set CODEARTIFACT_AUTH_TOKEN=%i
     ```
   + Windows PowerShell:

     ```
     $env:CODEARTIFACT_AUTH_TOKEN = aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text
     ```

------

1. Para publicar gems Ruby em seu repositório, use o comando a seguir para buscar o endpoint do repositório do CodeArtifact e armazená-lo na variável de ambiente `RUBYGEMS_HOST`. A CLI `gem` usa essa variável de ambiente para determinar onde os gems são publicados.
**nota**  
Como alternativa, em vez de usar a variável de ambiente `RUBYGEMS_HOST`, você pode fornecer o endpoint do repositório com a opção `--host` ao usar o comando `gem push`.
   + Substitua *my\$1domain* pelo seu nome de domínio do CodeArtifact.
   + Substitua *111122223333* pelo ID da conta da AWS do proprietário do domínio. Se você estiver acessando um repositório em um domínio de sua propriedade, não será necessário incluir `--domain-owner`. Para obter mais informações, consulte [Domínios entre contas](domain-overview.md#domain-overview-cross-account).
   + Substitua *my\$1repo* pelo nome do seu repositório do CodeArtifact.

------
#### [ macOS and Linux ]

   ```
   export RUBYGEMS_HOST=`aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format ruby --query repositoryEndpoint --output text | sed 's:/*$::'`
   ```

------
#### [ Windows ]

   Os comandos a seguir recuperam o endpoint do repositório, removem o `/` à direita e o armazenam em uma variável de ambiente.
   + Windows (usando o shell de comando padrão):

     ```
     for /f %i in ('aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format ruby --query repositoryEndpoint --output text') do set RUBYGEMS_HOST=%i
                                     
     set RUBYGEMS_HOST=%RUBYGEMS_HOST:~0,-1%
     ```
   + Windows PowerShell:

     ```
     $env:RUBYGEMS_HOST = (aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format ruby --query repositoryEndpoint --output text).TrimEnd("/")
     ```

------

   O seguinte URL é um exemplo de endpoint de repositório:

   ```
   https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/
   ```
**nota**  
Para usar um endpoint de pilha dupla, use o endpoint `codeartifact.region.on.aws`.

1. Para publicar gems Ruby em seu repositório, você deve se autenticar no CodeArtifact com o RubyGems, editando seu arquivo `~/.gem/credentials` para incluir seu token de autenticação. Crie um diretório `~/.gem/` e um arquivo `~/.gem/credentials` se o diretório ou arquivo não existir.

------
#### [ macOS and Linux ]

   ```
   echo ":codeartifact_api_key: Bearer $CODEARTIFACT_AUTH_TOKEN" >> ~/.gem/credentials
   ```

------
#### [ Windows ]
   + Windows (usando o shell de comando padrão):

     ```
     echo :codeartifact_api_key: Bearer %CODEARTIFACT_AUTH_TOKEN% >> %USERPROFILE%/.gem/credentials
     ```
   + Windows PowerShell:

     ```
     echo ":codeartifact_api_key: Bearer $env:CODEARTIFACT_AUTH_TOKEN" | Add-Content ~/.gem/credentials
     ```

------

1. Para usar `gem` para instalar gems Ruby por meio do seu repositório, você deve adicionar as informações do endpoint do repositório e o token de autenticação ao seu arquivo `.gemrc`. Você pode adicioná-las ao arquivo global (`~/.gemrc`) ou ao arquivo `.gemrc` do seu projeto. As informações do CodeArtifact que você deve adicionar a `.gemrc` são uma combinação do endpoint do repositório e do token de autenticação. O formato é o seguinte:

   ```
   https://aws:${CODEARTIFACT_AUTH_TOKEN}@my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/
   ```
   + Para o token de autenticação, você pode usar a variável de ambiente `CODEARTIFACT_AUTH_TOKEN` definida em uma etapa anterior.
   + Para buscar o endpoint do repositório, você pode ler o valor da variável de ambiente `RUBYGEMS_HOST` definida anteriormente ou usar o seguinte comando `get-repository-endpoint`, substituindo os valores conforme necessário:

     ```
     aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format ruby --query repositoryEndpoint --output text
     ```

   Após obter o endpoint, use um editor de texto para adicionar `aws:${CODEARTIFACT_AUTH_TOKEN}@` na posição apropriada. Após criar o endpoint do repositório e a string do token de autenticação, adicione-os à seção `:sources:` do seu arquivo `.gemrc` com o comando `echo` da seguinte forma:
**Atenção**  
O CodeArtifact não é compatível com a adição de repositórios como fontes usando o comando `gem sources -add`. Você deve adicionar a fonte diretamente ao arquivo.

------
#### [ macOS and Linux ]

   ```
   echo ":sources:
       - https://aws:${CODEARTIFACT_AUTH_TOKEN}@my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/" > ~/.gemrc
   ```

------
#### [ Windows ]
   + Windows (usando o shell de comando padrão):

     ```
     echo ":sources:
         - https://aws:%CODEARTIFACT_AUTH_TOKEN%@my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/" > "%USERPROFILE%\.gemrc"
     ```
   + Windows PowerShell:

     ```
     echo ":sources:
         - https://aws:$env:CODEARTIFACT_AUTH_TOKEN@my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/" | Add-Content ~/.gemrc
     ```

------

1. Para usar o Bundler, você deve configurar o Bundler com o URL do endpoint do repositório e o token de autenticação executando o seguinte comando `bundle config`:

------
#### [ macOS and Linux ]

   ```
   bundle config $RUBYGEMS_HOST aws:$CODEARTIFACT_AUTH_TOKEN 
   ```

------
#### [ Windows ]
   + Windows (usando o shell de comando padrão):

     ```
     bundle config %RUBYGEMS_HOST% aws:%CODEARTIFACT_AUTH_TOKEN%
     ```
   + Windows PowerShell:

     ```
     bundle config $Env:RUBYGEMS_HOST aws:$Env:CODEARTIFACT_AUTH_TOKEN
     ```

------

Agora que o RubyGems (`gem`) e o Bundler (`bundle`) foram configurados com o seu repositório do CodeArtifact, você pode usá-los para publicar gems Ruby no repositório e consumir gems Ruby por meio dele.

## Instalar gems Ruby por meio do CodeArtifact
<a name="install-ruby-gems"></a>

Use os procedimentos a seguir para instalar gems Ruby por meio de um repositório do CodeArtifact com as ferramentas da CLI `gem` ou `bundle`.

### Instalar gems Ruby com `gem`
<a name="install-ruby-gems-gem"></a>

É possível usar a CLI do RubyGems (`gem`) para instalar rapidamente uma versão específica de um gem Ruby por meio do repositório do CodeArtifact.

**Como instalar gems Ruby por meio de um repositório do CodeArtifact com `gem`**

1. Caso ainda não tenha feito isso, siga as etapas em [Configurar o RubyGems (`gem`) e o Bundler (`bundle`) com o CodeArtifact](#configure-ruby-gem) para configurar a CLI `gem` para usar o repositório do CodeArtifact com as credenciais adequadas.
**nota**  
O token de autorização gerado é válido por 12 horas. Você precisará criar um novo se tiverem passado 12 horas desde a criação do token.

1. Use o seguinte comando para instalar gems Ruby por meio do CodeArtifact:

   ```
   gem install my_ruby_gem --version 1.0.0
   ```

### Instalar gems Ruby com `bundle`
<a name="install-ruby-gems-bundle"></a>

Você pode usar a CLI do Bundler (`bundle`) para instalar os gems Ruby configurados em `Gemfile`.

**Como instalar gems Ruby por meio de um repositório do CodeArtifact com `bundle`**

1. Caso ainda não tenha feito isso, siga as etapas em [Configurar o RubyGems (`gem`) e o Bundler (`bundle`) com o CodeArtifact](#configure-ruby-gem) para configurar a CLI `bundle` para usar o repositório do CodeArtifact com as credenciais adequadas.
**nota**  
O token de autorização gerado é válido por 12 horas. Você precisará criar um novo se tiverem passado 12 horas desde a criação do token.

1. Adicione o URL do endpoint do repositório do CodeArtifact ao `Gemfile` como `source` para instalar gems Ruby configurados por meio do repositório do CodeArtifact e seus upstreams.

   ```
   source "https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/"
                   
   gem 'my_ruby_gem'
   ```

1. Use o seguinte comando para instalar os gems Ruby conforme especificado em `Gemfile`:

   ```
   bundle install
   ```

## Publicar gems Ruby no CodeArtifact
<a name="publish-ruby-gems-gem"></a>

Use o procedimento a seguir para publicar gems Ruby em um repositório do CodeArtifact usando a CLI `gem`.

1. Caso ainda não tenha feito isso, siga as etapas em [Configurar o RubyGems (`gem`) e o Bundler (`bundle`) com o CodeArtifact](#configure-ruby-gem) para configurar a CLI `gem` para usar o repositório do CodeArtifact com as credenciais adequadas.
**nota**  
O token de autorização gerado é válido por 12 horas. Você precisará criar um novo se tiverem passado 12 horas desde a criação do token.

1. Use o comando a seguir para publicar gems Ruby em um repositório do CodeArtifact. Observe que, se você não definiu a variável de ambiente `RUBYGEMS_HOST`, deverá fornecer o endpoint do repositório do CodeArtifact na opção `--host`.

   ```
   gem push --key codeartifact_api_key my_ruby_gem-0.0.1.gem
   ```

# Suporte para comandos RubyGems
<a name="ruby-command-support"></a>

O CodeArtifact é compatível com os comandos `gem install` e `gem push`. O CodeArtifact não é compatível com os seguintes comandos `gem`:
+ `gem fetch`
+ `gem info --remote`
+ `gem list --remote`
+ `gem mirror`
+ `gem outdated`
+ `gem owner`
+ `gem query`
+ `gem search`
+ `gem signin`
+ `gem signout`
+ `gem sources --add`
+ `gem sources --update`
+ `gem specification --remote`
+ `gem update`
+ `gem yank`

# Compatibilidade do Bundler
<a name="bundler-compatibility"></a>

 Este guia contém informações sobre a compatibilidade do CodeArtifact com o Bundler. 

## Compatibilidade do Bundler
<a name="ruby-bundler-support"></a>

O AWS CodeArtifact recomenda o Bundler 2.4.11 ou superior. Se você encontrar problemas com a instalação, atualize a CLI do Bundler para a versão mais recente.

### Suporte à versão do Bundler
<a name="ruby-bundler-version-support"></a>

Nas versões do Bundler anteriores à 2.4.11, há um limite de 500 dependências que podem ser definidas no Gemfile antes que o Bundler decida consultar o índice completo, `specs.4.8.gz`. Como o CodeArtifact não é compatível com o índice completo, especificar mais de 500 dependências não funcionará com o CodeArtifact ao usar versões do Bundler anteriores à 2.4.11.

Para definir mais de 500 dependências no Gemfile com o CodeArtifact, atualize o Bundler para a versão 2.4.11 ou superior.

### Suporte às operações do Bundler
<a name="ruby-bundler-operations-support"></a>

O suporte do CodeArtifact para RubyGems não inclui as APIs do Compact Index do Bundler (a API `/versions` não é compatível). O CodeArtifact só é compatível com a API de dependências.

Além disso, o CodeArtifact não é compatível com as várias APIs de especificações, como `specs.4.8.gz`.