Estoy usando Ruby 2.3.0. Cada vez que abro una nueva pestaña de bash, mi versión de ruby se degrada a 2.2.3. Entonces, para asegurarme de que estoy usando la última, lo hago rvm use 2.3.0. Eso soluciona el problema por pestaña y da este mensaje:

PATH is not properly set up, '/Users/mkeable/.rvm/gems/ruby-2.3.0/bin' is not at first place,
         usually this is caused by shell initialization files - check them for 'PATH=...' entries,
         it might also help to re-add RVM to your dotfiles: 'rvm get stable --auto-dotfiles',
         to fix temporarily in this shell session run: 'rvm use ruby-2.3.0'.

Así que hago echo $PATH y obtengo algo bastante autoexplicativo:

/usr/local/bin:/Users/mkeable/.rvm/gems/ruby-2.3.0/bin:/Users/mkeable/.rvm/gems/ruby-2.3.0@global/bin:/Users/mkeable/.rvm/rubies/ruby-2.3.0/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Users/mkeable/.rvm/bin

Mi .bashrc tiene esto:

export PATH="/usr/local/heroku/bin:$PATH" export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting

Y .bash_profile tiene esto:

source ~/.profile
export PATH=/usr/local/bin:$PATH
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

Esto es lo que obtengo de rvm info

Warning! PATH is not properly set up, '/Users/mkeable/.rvm/gems/ruby-2.3.0/bin' is not at first place,
         usually this is caused by shell initialization files - check them for 'PATH=...' entries,
         it might also help to re-add RVM to your dotfiles: 'rvm get stable --auto-dotfiles',
         to fix temporarily in this shell session run: 'rvm use ruby-2.3.0'.

ruby-2.3.0:

  system:
    uname:       "Darwin BC.local 13.4.0 Darwin Kernel Version 13.4.0: Wed Mar 18 16:20:14 PDT 2015; root:xnu-2422.115.14~1/RELEASE_X86_64 x86_64"
    system:      "osx/10.9/x86_64"
    bash:        "/bin/bash => GNU bash, version 3.2.53(1)-release (x86_64-apple-darwin13)"
    zsh:         "/bin/zsh => zsh 5.0.2 (x86_64-apple-darwin13.0)"

  rvm:
    version:      "rvm 1.26.11 (latest) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]"
    updated:      "3 minutes 39 seconds ago"
    path:         "/Users/mkeable/.rvm"

  ruby:
    interpreter:  "ruby"
    version:      "2.2.3p173"
    date:         "2015-08-18"
    platform:     "x86_64-darwin13"
    patchlevel:   "2015-08-18 revision 51636"
    full_version: "ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin13]"

  homes:
    gem:          "/Users/mkeable/.rvm/gems/ruby-2.3.0"
    ruby:         "/Users/mkeable/.rvm/rubies/ruby-2.3.0"

  binaries:
    ruby:         "/usr/local/bin/ruby"
    irb:          "/usr/local/bin/irb"
    gem:          "/usr/local/bin/gem"
    rake:         "/usr/local/bin/rake"

  environment:
    PATH:         "/usr/local/bin:/Users/mkeable/.rvm/gems/ruby-2.3.0/bin:/Users/mkeable/.rvm/gems/ruby-2.3.0@global/bin:/Users/mkeable/.rvm/rubies/ruby-2.3.0/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Users/mkeable/.rvm/bin"
    GEM_HOME:     "/Users/mkeable/.rvm/gems/ruby-2.3.0"
    GEM_PATH:     "/Users/mkeable/.rvm/gems/ruby-2.3.0:/Users/mkeable/.rvm/gems/ruby-2.3.0@global"
    MY_RUBY_HOME: "/Users/mkeable/.rvm/rubies/ruby-2.3.0"
    IRBRC:        "/Users/mkeable/.rvm/rubies/ruby-2.3.0/.irbrc"
    RUBYOPT:      ""
    gemset:       ""

Así que esto me confunde aún más. rvm list rubies dice que solo tengo 2.3.0, pero mi versión aquí está configurada en 2.2.3.

Puedo ver con bastante claridad lo que tengo que hacer, que es (creo) establecer /Users/mkeable/.rvm/gems/ruby-2.3.0/bin al comienzo de $ PATH. ¿Pero cómo?

5
calyxofheld 30 ene. 2016 a las 08:46

3 respuestas

La mejor respuesta

Suponiendo que tiene su binario Ruby 2.2 en /usr/local/bin, entonces definitivamente no quiere esta ruta frente a su /Users/mkeable/.rvm/gems/ruby-2.3.0/bin.

Para asegurar que la primera frente a la segunda haga Para asegurar que el primero frente al segundo haga

export PATH="/usr/local/heroku/bin:$PATH" 
export PATH="$HOME/.rvm/bin:$PATH"

En tu .bash_profile.

Una nota adicional: si Ruby 2.2 está de hecho dentro de /usr/local/bin, eso significa que puede eliminar (o cambiar el nombre temporalmente) el binario de esa ruta en lugar de reorganizar su $ PATH.

8
Martin Konecny 30 ene. 2016 a las 16:59

Poniendo export PATH="/Users/mkeable/.rvm/gems/ruby-2.3.0/bin:$PATH" en .bash_profile pone el binario de Ruby correcto al comienzo de la ruta. Al eliminar source ~/.profile de .bash_profile se borraron todas las duplicaciones que obtuve de echo $PATH. .bashrc ya está cargado, por lo que no hay razón para cargarlo por segunda vez.

0
calyxofheld 30 ene. 2016 a las 22:52

En mi mac en ~ / .profile tengo:

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

En mi ~ / .bash_profile:

source ~/.profile

Después de estas configuraciones, cierre sus terminales (Cmd + q en una mac) y ábralo nuevamente. Asegúrese de que todos los requisitos estén instalados, RVM funcione y ruby 2.3.0 esté instalado:

rvm requirements
rvm info
rvm install ruby-2.3.0

En su proyecto, sugiero guardar un archivo .rvmrc en la carpeta raíz de su proyecto:

rvm use ruby-2.3.0

O con gemas:

rvm use ruby-2.3.0@my_projet_gemset

De esta manera, cambia a ruby 2.3.0 (y su conjunto de gemas) cada vez que ingresa a la carpeta raíz del proyecto.

Funciona muy bien para mi.

1
guitarman 30 ene. 2016 a las 06:55