

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso de CodeArtifact con Ruby
<a name="using-ruby"></a>

En estos temas se describe cómo usar las herramientas RubyGems y Bundler con CodeArtifact para instalar y publicar gemas de Ruby.

**nota**  
CodeArtifact recomienda utilizar Ruby 3.3 o versiones posteriores y no funciona con Ruby 2.6 ni versiones anteriores.

**Topics**
+ [Configuración y uso de RubyGems y Bundler](configure-use-rubygems-bundler.md)
+ [Compatibilidad con los comandos de RubyGems](ruby-command-support.md)
+ [Compatibilidad con Bundler](bundler-compatibility.md)

# Configuración y uso de RubyGems y Bundler con CodeArtifact
<a name="configure-use-rubygems-bundler"></a>

Tras crear un repositorio en CodeArtifact, puede usar RubyGems (`gem`) y Bundler (`bundle`) para instalar y publicar gemas. En este tema se describe cómo configurar los administradores de paquetes para que se autentiquen y usen un repositorio de CodeArtifact.

## Configuración de RubyGems (`gem`) y Bundler (`bundle`) con CodeArtifact
<a name="configure-ruby-gem"></a>

Para usar RubyGems (`gem`) o Bundler (`bundle`) con el objetivo de publicar o consumir gemas desde AWS CodeArtifact, primero tiene que configurarlas con la información del repositorio de CodeArtifact, incluidas las credenciales para acceder a él. Siga los pasos de alguno de los siguientes procedimientos para configurar las herramientas `gem` y `bundle` de la CLI con la información y las credenciales del punto de conexión del repositorio de CodeArtifact.

### Configuración de RubyGems y Bundler siguiendo las instrucciones de la consola
<a name="configure-ruby-gem-console"></a>

Puede usar las instrucciones de configuración de la consola para conectar los administradores de paquetes de Ruby a su repositorio de CodeArtifact. Las instrucciones de la consola proporcionan comandos personalizados que puede ejecutar para configurar los administradores de paquetes sin tener que buscar e introducir la información de CodeArtifact.

1. Abra la consola de AWS CodeArtifact en [https://console.aws.amazon.com/codesuite/codeartifact/home](https://console.aws.amazon.com/codesuite/codeartifact/home).

1. En el panel de navegación, elija **Repositorios** y luego elija el nombre del que desee utilizar para instalar o insertar gemas de Ruby.

1. Seleccione **Ver instrucciones de conexión**.

1. Elija su sistema operativo.

1. Elija el cliente administrador de paquetes Ruby que desee configurar con el repositorio de CodeArtifact.

1. Siga las instrucciones generadas a fin de configurar el cliente administrador de paquetes para instalar gemas de Ruby desde el repositorio o instalarlas en este.

### Configuración manual de RubyGems y Bundler
<a name="configure-ruby-gem-manual"></a>

Si no puede o no quiere usar las instrucciones de configuración de la consola, puede usar las siguientes instrucciones para conectar los administradores de paquetes de Ruby al repositorio de CodeArtifact manualmente. 

1. En una línea de comandos, utilice el siguiente comando para obtener un token de autorización de CodeArtifact y almacenarlo en una variable de entorno.
   + Sustituya *my\$1domain* por su nombre de dominio de CodeArtifact.
   + Sustituya *111122223333* por el ID de la cuenta de AWS del propietario del dominio. Si va a acceder a un repositorio de un dominio de su propiedad, no tiene que incluir `--domain-owner`. Para obtener más información, consulte [Dominios entre cuentas](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 (mediante el intérprete de comandos predeterminado):

     ```
     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. Si quiere publicar gemas de Ruby en el repositorio, use el siguiente comando para obtener el punto de conexión del repositorio de CodeArtifact y almacenarlo en la variable de entorno `RUBYGEMS_HOST`. La CLI `gem` utiliza esta variable de entorno para determinar dónde se publican las gemas.
**nota**  
Como alternativa, en lugar de usar la variable de entorno `RUBYGEMS_HOST`, puede facilitar el punto de conexión del repositorio con la opción `--host` al utilizar el comando `gem push`.
   + Sustituya *my\$1domain* por su nombre de dominio de CodeArtifact.
   + Sustituya *111122223333* por el ID de la cuenta de AWS del propietario del dominio. Si va a acceder a un repositorio de un dominio de su propiedad, no tiene que incluir `--domain-owner`. Para obtener más información, consulte [Dominios entre cuentas](domain-overview.md#domain-overview-cross-account).
   + Sustituya *my\$1repo* por el nombre de su repositorio de 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 ]

   Los siguientes comandos recuperan el punto de conexión del repositorio, recortan el símbolo `/` final y, a continuación, lo almacenan en una variable de entorno.
   + Windows (mediante el intérprete de comandos predeterminado):

     ```
     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("/")
     ```

------

   La siguiente URL es un punto de conexión de repositorio de ejemplo:

   ```
   https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/
   ```
**nota**  
Si quiere utilizar un punto de conexión de pila doble, use el punto de conexión `codeartifact.region.on.aws`.

1. Para publicar gemas de Ruby en el repositorio, tiene que autenticarse en CodeArtifact con RubyGems editando el archivo `~/.gem/credentials` para incluir su token de autenticación. Cree un directorio `~/.gem/` y un archivo `~/.gem/credentials` si el directorio o el archivo no existen.

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

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

------
#### [ Windows ]
   + Windows (mediante el intérprete de comandos predeterminado):

     ```
     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 poder usar `gem` con la intención de instalar gemas de Ruby desde su repositorio, debe añadir la información del punto de conexión del repositorio y el token de autenticación al archivo `.gemrc`. Puede añadirlos al archivo global (`~/.gemrc`) o al archivo `.gemrc` de su proyecto. La información de CodeArtifact que debe añadir a `.gemrc` es una combinación de datos del punto de conexión del repositorio y del token de autenticación. Su formato es el siguiente:

   ```
   https://aws:${CODEARTIFACT_AUTH_TOKEN}@my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/ruby/my_repo/
   ```
   + Para el token de autenticación, puede usar la variable de entorno `CODEARTIFACT_AUTH_TOKEN` que se configuró en un paso anterior.
   + Para obtener el punto de conexión del repositorio, puede leer el valor de la variable de entorno `RUBYGEMS_HOST` que se configuró antes, o bien puede usar el comando `get-repository-endpoint` siguiente y sustituir los valores según sea necesario:

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

   Una vez que tenga el punto de conexión, use un editor de texto para añadir `aws:${CODEARTIFACT_AUTH_TOKEN}@` en la posición adecuada. Cuando tenga creados el punto de conexión del repositorio y la cadena del token de autenticación, agréguelos a la sección `:sources:` del archivo `.gemrc` con el comando `echo` de la siguiente manera:
**aviso**  
CodeArtifact no admite la adición de repositorios como fuente u origen mediante el comando `gem sources -add`. Debe añadir el origen directamente al archivo.

------
#### [ 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 (mediante el intérprete de comandos predeterminado):

     ```
     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 Bundler, debe configurarlo con la URL del punto de conexión del repositorio y el token de autenticación ejecutando el comando `bundle config` siguiente:

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

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

------
#### [ Windows ]
   + Windows (mediante el intérprete de comandos predeterminado):

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

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

------

Ahora que ha configurado RubyGems (`gem`) y Bundler (`bundle`) con su repositorio de CodeArtifact, puede usarlos para publicar y consumir gemas de Ruby desde él y en él.

## Instalación de gemas de Ruby desde CodeArtifact
<a name="install-ruby-gems"></a>

Utilice los siguientes procedimientos para instalar gemas de Ruby desde un repositorio de CodeArtifact con las herramientas CLI de `gem` o `bundle`.

### Instalación de gemas de Ruby con `gem`
<a name="install-ruby-gems-gem"></a>

Puede usar la CLI de RubyGems (`gem`) para instalar rápidamente una versión específica de una gema de Ruby desde su repositorio de CodeArtifact.

**Cómo instalar gemas de Ruby desde un repositorio de CodeArtifact con `gem`**

1. Si no lo ha hecho, siga los pasos de [Configuración de RubyGems (`gem`) y Bundler (`bundle`) con CodeArtifact](#configure-ruby-gem) para configurar la CLI de `gem` y usar su repositorio de CodeArtifact con las credenciales adecuadas.
**nota**  
El token de autorización generado es válido durante 12 horas. Deberá crear uno nuevo si han pasado 12 horas desde que se creó el token.

1. Utilice el siguiente comando para instalar gemas de Ruby desde CodeArtifact:

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

### Instalación de gemas de Ruby con `bundle`
<a name="install-ruby-gems-bundle"></a>

Puede usar la CLI de Bundler (`bundle`) para instalar las gemas de Ruby que están configuradas en su archivo `Gemfile`.

**Cómo instalar gemas de Ruby desde un repositorio de CodeArtifact con `bundle`**

1. Si no lo ha hecho, siga los pasos de [Configuración de RubyGems (`gem`) y Bundler (`bundle`) con CodeArtifact](#configure-ruby-gem) para configurar la CLI de `bundle` y usar su repositorio de CodeArtifact con las credenciales adecuadas.
**nota**  
El token de autorización generado es válido durante 12 horas. Deberá crear uno nuevo si han pasado 12 horas desde que se creó el token.

1. Agrega la URL del punto de conexión del repositorio de CodeArtifact al archivo `Gemfile` como `source` para instalar gemas de Ruby configuradas desde su repositorio de CodeArtifact y sus fuentes de distribución.

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

1. Ejecute el siguiente comando para instalar las gemas de Ruby tal y como se especifica en el archivo `Gemfile`:

   ```
   bundle install
   ```

## Publicación de gemas de Ruby en CodeArtifact
<a name="publish-ruby-gems-gem"></a>

Utilice el siguiente procedimiento para publicar gemas de Ruby en un repositorio de CodeArtifact con la CLI de `gem`.

1. Si no lo ha hecho, siga los pasos de [Configuración de RubyGems (`gem`) y Bundler (`bundle`) con CodeArtifact](#configure-ruby-gem) para configurar la CLI de `gem` y usar su repositorio de CodeArtifact con las credenciales adecuadas.
**nota**  
El token de autorización generado es válido durante 12 horas. Deberá crear uno nuevo si han pasado 12 horas desde que se creó el token.

1. Utilice el siguiente comando para publicar gemas de Ruby en un repositorio de CodeArtifact. Tenga en cuenta que si no configuró la variable de entorno `RUBYGEMS_HOST`, debe proporcionar el punto de conexión del repositorio de CodeArtifact en la opción `--host`.

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

# Compatibilidad con los comandos de RubyGems
<a name="ruby-command-support"></a>

CodeArtifact admite los comandos `gem install` y `gem push`. CodeArtifact no admite los comandos `gem` siguientes:
+ `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`

# Compatibilidad con Bundler
<a name="bundler-compatibility"></a>

 Esta guía contiene información sobre la compatibilidad de CodeArtifact con Bundler. 

## Compatibilidad con Bundler
<a name="ruby-bundler-support"></a>

AWS CodeArtifact recomienda Bundler 2.4.11 o versiones superiores. Si tiene problemas con la instalación, actualice la CLI de Bundler a la última versión.

### Compatibilidad de las versiones de Bundler
<a name="ruby-bundler-version-support"></a>

En las versiones de Bundler anteriores a la 2.4.11, hay un límite de 500 dependencias que se pueden definir en el Gemfile antes de que Bundler decida consultar el índice completo, `specs.4.8.gz`. Como CodeArtifact no admite el índice completo, especificar más de 500 dependencias no funcionará con CodeArtifact cuando se utilicen versiones de Bundler anteriores a la 2.4.11.

Para definir más de 500 dependencias en el Gemfile con CodeArtifact, actualice Bundler a la versión 2.4.11 u otra versión superior.

### Compatibilidad de las operaciones de Bundler
<a name="ruby-bundler-operations-support"></a>

La compatibilidad de CodeArtifact con RubyGems no incluye las API de Bundler Compact Index (la API `/versions` no es compatible). CodeArtifact solo admite la API de dependencias.

Además, CodeArtifact no es compatible con las diversas API de especificaciones, como `specs.4.8.gz`.