.rvmrc y mac osx lion "restaurar" problema

0

Acabo de cambiar a Lion hace un par de días, y Juts notó que cuando sale de Terminal mientras está en una carpeta, cuando la abre, debería estar nuevamente en esa carpeta (junto con sus otras pestañas).

Esta es una buena característica, pero el problema es que no "actualiza" sus rutas. es decir, incluso si tenía un archivo .rvmrc en la carpeta de la aplicación, no volverá a configurar el ruby y el gemset. Tendrá que salir y volver a entrar, lo que anula el propósito de tener un rvmrc.

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

EDIT Siguiendo el consejo de Chris Page, agregué cd "$PWD" en la última línea de mi .bashrc (que está cargado por mi .bash_profile)

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

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 puede ver, cargó el gemset (impreso por "Using / Users ...") pero al intentar hacer una lista de gemas y mostrar la versión de ruby, dice que aún no la cargó. (La versión ruby debería ser 1.9.2)

EDIT 2

Actualicé mi rvm y ahora cualquiera de las correcciones no funciona.

Imprime que está utilizando el gemset en mi rvm pero cuando hago una gema env, 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 gema env resultados 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

cuál es el entorno correcto. Como puede ver, el conjunto de gemas se cargó correctamente (junto con las gemas) pero aún está utilizando el sistema ruby en lugar del rvmrc ruby.

    
pregunta corroded 05.08.2011 - 05:20

4 respuestas

1

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

En algún shell:

rvm get latest

Luego, reinicia tus otros shells existentes o ejecuta rvm reload en ellos.

Nota: Otro problema que enfrentó el OP fue la manipulación de PATH después de cargar RVM en el shell. Esto creó el efecto de "instalación correcta de gemset, pero instalación incorrecta de ruby" que desapareció después de "cd out, cd in" (ya que RVM habría reafirmado su posición en el PATH en ese punto). Cuando se inicia un shell en un directorio que contiene .rvmrc , es vital que RVM sea lo último en anteponer a la ruta PATH (al menos cualquier elemento PATH que pueda contener un ruby ( etc.) para que la instalación de Ruby seleccionada en .rvmrc sea efectiva).

RVM organiza los archivos .rvmrc para "enganchar" el comando cd de su shell (una función de shell cd en bash , una entrada en chpwd_functions para zsh ). Normalmente, esto le permite detectar cualquier comando "normal" cd que lo escriba o ejecute a través de un script de origen después de cargar RVM.

No tengo Lion con quien probar, pero sospecho que la forma en que funciona es que Terminal forks, llama a 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 para cuando RVM se carga en su archivo de inicialización de shell.

El historial parece un poco confuso, pero RVM ha tenido algo de soporte para obtener el archivo .rvmrc en el directorio de trabajo inicial del shell cuando se carga por primera vez. Parece que tal vez estaba destinado a ser pantalla , específico, pero en RVM commit cb649ba (Siempre cargue el .rvmrc si está en un shell interactivo (abrir una nueva pestaña en la misma dirección)., 2011-05-14) relajó el requisito para que debería generar los archivos .rvmrc para cualquier shell interactivo cuando RVM se carga por primera vez. Este compromiso fue presente por primera vez en la versión 1.6.10 de RVM. El código ha cambiado un poco desde entonces, pero aún funciona (más o menos) de la misma manera en las últimas versiones.

    
respondido por el Chris Johnsen 09.08.2011 - 06:49
2

Lion Terminal selecciona / restaura el directorio de trabajo configurándolo con chdir () antes de que comience 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 ejecute algún comando con $ PWD.

Suponiendo que estás usando bash (el valor predeterminado), lo que aparentemente querrías hacer es agregar algo como esto en ~ / .bashrc:

cd "$PWD"

No estoy familiarizado con rvmc, pero asumo que debe usar el script de inicio de shell para personalizar el comando "cd", así que asegúrese de emitir este comando después de eso. Además, si aún no tiene scripts de inicio de shell, generalmente querrá crear ~ / .bash_profile y hacer que se ejecute ~ / .bashrc si existe (mire a su alrededor en StackExchange o use Google para encontrar este idioma común).

    
respondido por el Chris Page 09.08.2011 - 01:14
0

Sé que no es un "arreglo", pero puede salir del terminal con el comando + opción + q se cerrará sin guardar la información de ruta.

O puede usar iTerm2 ( enlace ), tiene algunas cosas mejores que el terminal predeterminado.

    
respondido por el Polo Ornelas 05.08.2011 - 18:42
0

Solución 1: Ok encontré la mejor solución. Así que creé un script llamado .loadrvmrc y que solo contenía "cd ./" (también chmod + x it)

Luego lo cargué en mi .bash_profile, PERO tomo nota de que debería cargarse en orden.

Primero, carga tu .bashrc:

source ~/.bashrc

luego su ruta (que carga rvm:

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

y ENTONCES el script .loadrvmrc:

source ~/.loadrvmrc

Voila! Puede cerrar su terminal y abrirlo con todas sus pestañas y todos sus respectivos .rvmrcs.

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

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

De todos modos, en el terminal predeterminado, acabo de cambiar Terminal > Preferences > Settings y luego verifiqué Inicio y agregué cd ./ como el script de inicio.

Esto todavía es feo para mí, ya que al iniciar el terminal se obtendrán

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$ 

que es un poco aceptable (hasta que aparezca una mejor solución).

    
respondido por el corroded 09.08.2011 - 05:47

Lea otras preguntas en las etiquetas