¿Utiliza el archivo rvmrc o ruby-version para establecer un proyecto de conjunto de gemas con RVM?

230

Uso RVM, el Administrador de versiones de Ruby para especificar una versión de Ruby y un conjunto de gemas para cada uno de mis proyectos de Rails.

Tengo un .rvmrcarchivo para seleccionar automáticamente una versión de Ruby y un conjunto de gemas cada vez que entro cden un directorio de proyecto.

Después de instalar RVM 1.19.0, recibo un mensaje

Está utilizando .rvmrc, requiere confianza, es más lento y no es compatible con otros administradores de ruby, puede cambiar a .ruby-versionusar rvm rvmrc to [.]ruby-versiono ignorar estas advertencias rvm rvmrc warning ignore /Users/userName/code/railsapps/rails-prelaunch-signup/.rvmrc, .rvmrccontinuará siendo el archivo de proyecto predeterminado en RVM 1 y RVM 2, para ignorar el advertencia para todos los archivos ejecutados rvm rvmrc warning ignore all.rvmrcs.

¿Debo seguir usando mi .rvmrcarchivo o debo cambiar a un .ruby-versionarchivo? ¿Cuál es óptimo? ¿Cuáles son las ramificaciones?

Daniel Kehoe
fuente

Respuestas:

372

Si su .rvmrcarchivo contiene un código de shell personalizado, continúe usándolo, .rvmrcya que le permite incluir cualquier código de shell.

Si su único objetivo es cambiar las versiones de Ruby, utilice el .ruby-versionque sea compatible con otros conmutadores de versiones de Ruby como rbenv o chruby . Este archivo tampoco requiere confianza, ya que es solo el nombre de una versión de Ruby y no se ejecutará de ninguna manera.

Si lo usa .ruby-version, puede incluirlo @gemseten el archivo, pero esto no será compatible con otros conmutadores. Para mantener la compatibilidad, use el nombre del conjunto de gemas en un archivo separado .ruby-gemsetque otras herramientas ignoran (solo funciona junto con .ruby-version) .

Por ejemplo, si tienes un simple .rvmrc:

rvm use 1.9.3@my-app

Se puede transformar a .ruby-version:

1.9.3

Y .ruby-gemset:

my-app

Asegúrese de eliminar el .rvmrcarchivo, ya que tiene prioridad sobre cualquier otro archivo de configuración del proyecto:

rm .rvmrc
mpapis
fuente
99
Tenga en cuenta que no todas las aplicaciones todavía admiten los archivos .ruby-version y .ruby-gemset más nuevos, sino solo .rvmrc. (RubyMine en particular). Esto, por supuesto, afectaría su elección de pasar al nuevo sistema. Ya lo había señalado en una respuesta, ya que me tomó mucho tiempo rastrearlo. Sin embargo, mi respuesta fue eliminada por alguna razón ..
giorgio
2
¿Hay un enlace a alguna documentación "oficial" sobre esto? Comencé a investigar cómo funciona esto en el sitio RVM, pero acabo de encontrar una vaga mención al nuevo archivo rvmrc, pero nada sobre cómo debería funcionar.
Eirc
2
No está completamente documentado, pero esto es lo que ya tenemos rvm.io/workflow/projects/#ruby-versions
mpapis
44
Simplemente coloque 1.9.3-p194 en .ruby-version no funciona para mí. Consulte el documento anterior, rvm --create --ruby-version use 1.9.3-p194haga el trabajo, y el contenido interior es en realidadruby-1.9.3-p194
Jinzhao Huo
2
Las versiones actuales de RubyMine admiten el estilo de versión .ruby. Puede confirmar con 6.3.2
BeepDog
76

Manera rápida y fácil de cambiar de .rvmrc a .ruby-version + .ruby-gemset

rvm rvmrc to .ruby-version
Sam Backus
fuente
1
Es cierto, pero pone [] alrededor del. por alguna razón que no he descubierto. (tal vez esta es una convención con la que no estoy familiarizado). En realidad busqué en Google el mensaje y encontré esta respuesta porque la fraseología incómoda y el [] me hicieron dudar de qué ejecutar.
zem
2
@zem [] en [.]ruby-versionindica que el punto es opcional ; los corchetes son una convención común para indicar la opcionalidad (en general, no en ruby). Por lo tanto, podría usar un archivo llamado "ruby-version", sin el punto, y eso también se usaría. Esto puede ser útil si desea una mayor visibilidad del archivo en sistemas que ocultan "archivos de puntos" de forma predeterminada. Sin embargo, estoy de acuerdo en que no está tan claro.
Matt Gibson
DiceCould not load .rvmrc
Abdullah
4

Si desea crear el archivo .ruby-versiony .ruby-gemsetde una manera corta, puede usar los comandos como este:

rvm use 2.1.1@nancy --create

rvm --create --ruby-version 2.1.1@nancy
usuario2627938
fuente
2

Puedes probar ambos. Vaya a la raíz de su proyecto, cree un archivo .rvmrc ( touch .rvmrc), luego edite rvm use 2.0.0-p451@your_gemset(su versión de ruby ​​y su nombre de gema). Después de guardar este archivo, puede escribir este comando:

cd ../your_project(estás en el directorio de tu_proyecto ) y se ejecutará el script en .rvmrc.

El RVM recomienda usar la versión ruby. Puede ejecutar este comando para cambiar de .rvmrc a .ruby-version

rvm rvmrc to .ruby-version

Lo que hace es crear 2 archivos con el nombre .ruby-version y .ruby-gemset y agregar esta línea

ruby-2.0.0-p451 en versión .ruby

your_gemset en .ruby-gemset

Puedes intentar hacerlo manualmente si quieres :)

duykhoa
fuente
0

Instale rvm usando:

\curl -sSL https://get.rvm.io | bash -s stable --rails

Instale diferentes versiones de ruby:

rvm install 1.8.7
rvm install 1.9.2

Cambiar a la versión específica de ruby. Por ejemplo, 1.8.7:

rvm use 1.8.7

Para crear una gema:

rvm gemset create project_gemset

Y para usar un conjunto de gemas:

rvm gemset use project_gemset
Narasu Londave
fuente