0 votos

.rvmrc y el problema de "restauración" de mac osx lion

Acabo de cambiar a Lion hace un par de días, y acabo de notar que cuando sales de Terminal mientras estás en una carpeta, cuando la abres, debería estar de nuevo en esa carpeta (junto con tus otras pestañas).

Esta es una buena característica, pero el problema es que no "refresca" tus rutas. lo que significa que incluso si tienes un archivo .rvmrc en tu carpeta de aplicaciones, no establecerá el ruby y el gemset de nuevo. tendrás que salir y volver a entrar, lo que anula el propósito de tener un rvmrc.

¿Se trata de un error conocido y ya hay correcciones/parches para ello?

EDITAR Siguiendo el consejo de Chris Page, he añadido cd "$PWD" en la última línea de mi .bashrc (que es cargado por mi .bash_profile)

Esto a su vez "carga" el rvmrc como se esperaba:

Last login: Tue Aug  9 11:29:09 on ttys003
Using /Users/eumir/.rvm/gems/ruby-1.9.2-p180 with gemset mygemset

eumir$ gem list
/Users/eumir/.rvm/rubies/ruby-1.9.2-p180/bin/gem:12:in `require': no such file to load -- rubygems (LoadError)
from /Users/eumir/.rvm/rubies/ruby-1.9.2-p180/bin/gem:12

eumir$ ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10.2.0]

Como se puede ver, sí cargó el conjunto de gemas (impreso por "Using /Users...") pero al intentar hacer la lista de gemas y mostrar la versión de ruby dice que aún no lo cargó. (la versión de rubí debería ser 1.9.2)

EDITAR 2

He actualizado mi rvm y ahora no funciona ninguna de las correcciones.

Imprime que está usando el conjunto de gemas en mi rvm pero cuando hago un env de gemas, me sale esto:

eumir$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.6
  - RUBY VERSION: 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]
  - INSTALLATION DIRECTORY: /Users/eumir/.rvm/gems/ruby-1.8.7-p174@awetest
  - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/eumir/.rvm/gems/ruby-1.8.7-p174@awetest/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-11
  - GEM PATHS:
     - /Users/eumir/.rvm/gems/ruby-1.8.7-p174@mygemset
     - /Users/eumir/.rvm/gems/ruby-1.8.7-p174@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://rubygems.org/", "http://gemcutter.org"]
     - "gem" => "--no-ri --no-rdoc"
  - REMOTE SOURCES:
     - http://rubygems.org/
     - http://gemcutter.org

haciendo cd ../ y luego cd myfolder y luego los resultados de la gema env con esto:

eumir$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.7.2
  - RUBY VERSION: 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10.4.0]
  - INSTALLATION DIRECTORY: /Users/eumir/.rvm/gems/ruby-1.8.7-p174@awetest
  - RUBY EXECUTABLE: /Users/eumir/.rvm/rubies/ruby-1.8.7-p174/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/eumir/.rvm/gems/ruby-1.8.7-p174@awetest/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-darwin-10
  - GEM PATHS:
     - /Users/eumir/.rvm/gems/ruby-1.8.7-p174@mygemset
     - /Users/eumir/.rvm/gems/ruby-1.8.7-p174@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://rubygems.org/", "http://gemcutter.org"]
     - "gem" => "--no-ri --no-rdoc"
  - REMOTE SOURCES:
     - http://rubygems.org/
     - http://gemcutter.org

que es el entorno correcto. Como puede ver, el conjunto de gemas se cargó correctamente (junto con las gemas), pero sigue utilizando el ruby del sistema en lugar del ruby de rvmrc.

2voto

Yasmine Mustafa Puntos 21

Lion Terminal selecciona/restaura el directorio de trabajo estableciéndolo con chdir() antes de que se inicie el shell. Si desea realizar automáticamente algún tipo de trabajo adicional relacionado con el directorio de trabajo, debe personalizar el shell con un script de inicio que realice algún comando con $PWD.

Asumiendo que estás usando bash (el predeterminado), lo que aparentemente querrías hacer es añadir algo como esto en ~/.bashrc:

cd "$PWD"

No estoy familiarizado con rvmc, pero supongo que debe utilizar el inicio del shell script para personalizar el comando "cd", así que asegúrese de emitir este comando después de eso. Además, si aún no tiene el inicio del shell , normalmente querrá crear ~/.bash_profile y hacer que ejecute ~/.bashrc si existe (busque en StackExchange o use Google para encontrar este lenguaje común).

1voto

Nip Puntos 362

Intente actualizar su instalación de RVM si está ejecutando algo más antiguo que la versión 1.6.10 (compruebe su versión activa con rvm --version ).

En alguna cáscara:

rvm get latest

A continuación, reinicie sus otros shells existentes o ejecute rvm reload en ellos.

Nota: Otro problema al que se enfrentó el OP fue la manipulación del PATH después de cargar RVM en el shell. Esto creaba el efecto "gemset correcto seleccionado, pero instalación errónea de ruby" que desaparecía después de "cd out, cd in" (ya que RVM habría reafirmado su posición en el PATH en ese momento). Cuando se inicia un shell en un directorio que contiene un .rvmrc es vital que la RVM sea lo último en añadir al PATH (al menos cualquier elemento del PATH que pueda contener un ruby (etc.) para que la instalación de Ruby seleccionada en el .rvmrc será efectiva).


La RVM se encarga de la obtención de .rvmrc archivos "enganchando" el shell cd comando (a cd función de shell en bash una entrada en chpwd_functions para zsh ). Normalmente, esto le permite atrapar cualquier "normal" cd que se escribe o se ejecuta a través de un script de origen después de cargar RVM.

No tengo Lion para probar, pero sospecho que la forma en que funciona es que Terminal horquillas, llamadas chdir(2) , luego ejecuta su shell para establecer el directorio de trabajo inicial de su nuevo shell. Esto significa que el directorio ya está establecido en el momento en que se carga RVM en su archivo de inicialización del shell.

La historia parece un poco confusa, pero la RVM ha tenido algún apoyo para el abastecimiento de la .rvmrc en el directorio de trabajo inicial del shell cuando se carga por primera vez. Parece que tal vez se pretendía que fuera pantalla -específicos, pero en RVM commit cb649ba (Siempre cargar el .rvmrc si en un shell interactivo (abrir nueva pestaña en el mismo dir)., 2011-05-14) relajó el requisito para que debe fuente .rvmrc para cualquier shell interactivo cuando RVM se carga por primera vez. Este commit estuvo presente por primera vez en la versión 1.6.10 de RVM. El código ha cambiado un poco desde entonces, pero sigue funcionando (más o menos) de la misma manera en las últimas versiones.

0voto

thenonhacker Puntos 252

Sé que no es un "arreglo", pero puedes salir de la terminal con command+option+q y saldrá sin guardar la información de la ruta.

O puede utilizar iTerm2 ( http://www.iterm2.com/ ), tiene algunas cosas mejores que el terminal por defecto.

0voto

Kemo Puntos 11

Arreglo 1: Bien encontrado la mejor solución. Así que creé un script llamado .loadrvmrc y que sólo contenía "cd ./" (también chmod +x lo)

Luego lo cargué en mi .bash_profile, PERO tenga en cuenta que debe ser cargado en orden.

Primero, cargue su .bashrc:

source ~/.bashrc

entonces su ruta (que carga rvm:

export PATH=/usr/local/mysql/bin:/usr/local/bin:/usr/local/sbin:/Users/eumir/.rvm/bin:$PATH

y luego el .loadrvmrc script:

source ~/.loadrvmrc

¡Voilà! Puedes cerrar tu terminal y abrirla con todas tus pestañas y sus respectivos .rvmrcs.

\=========== Arreglo 2: (no programático)

De momento lo he arreglado. Tal vez sea un problema de sincronización de rvm o bashrc, así que no estoy seguro. Si alguien puede publicar una mejor solución/respuesta para esto por favor hágalo y cambiaré la respuesta aceptada para esta pregunta.

De todos modos, en el Terminal por defecto, acabo de cambiar Terminal > Preferences > Settings y luego comprobó la puesta en marcha y añadió cd ./ como el script de inicio.

Esto sigue siendo feo para mí, ya que al iniciar la terminal aparece

Last login: Tue Aug  9 11:43:06 on ttys003
eumir$ cd ./
Using /Users/eumir/.rvm/gems/ruby-1.9.2-p180 with gemset mygemset
eumir$ 

lo cual es bastante aceptable (hasta que aparezca una solución mejor).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X