sierra rails mac ruby-on-rails ruby macos rubygems

ruby-on-rails - mac - rvm install rails



''sudo gem install'' o ''gem install'' y ubicaciones de gemas (7)

Contrariamente a todas las otras publicaciones, sugiero NO usar sudo al instalar gemas.

En su lugar, le recomiendo que instale RVM y comience una vida feliz con casas de gemas portátiles y una versión diferente de Ruby que viven bajo un mismo techo.

Para los no iniciados, de la documentación :

RVM es una herramienta de línea de comandos que nos permite instalar, administrar y trabajar fácilmente con múltiples entornos ruby ​​y conjuntos de gemas.

La razón por la cual la instalación de gemas con sudo es peor que la gem install es porque instala las gemas para TODOS LOS USUARIOS como root . Esto podría estar bien si eres la única persona que usa la máquina, pero si no lo estás puede causar rareza.

Si decides que quieres destruir todas tus gemas y comenzar de nuevo, es mucho más fácil y más seguro hacerlo como usuario no root.

Si decides que quieres utilizar RVM , usar sudo provocará todo tipo de rarezas porque cada versión de Ruby que instales a través de RVM tiene su propia GEM_HOME.

Además, es agradable si puede hacer que su entorno de desarrollo esté lo más cerca posible de su entorno de producción, y en la producción probablemente instalará gemas como usuario no root.

Ejecutar '' sudo gem list --local '' y '' gem list --local '' me da resultados diferentes. Mi ruta de la gema se establece en mi carpeta de inicio y solo contiene las gemas de '' gem list --local ''.

Probablemente no sea bueno tener gemas instaladas en diferentes directorios en mi computadora, así que ¿debo tener la ruta de la gema establecida de manera diferente, y siempre debo usar sudo al instalar algo?

my ~/.profile export PATH=/opt/local/bin:/opt/local/sbin:$PATH export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"

~ / .bash_profile está vacío.


En el caso que tú

  • gemas de rubíes instaladas con sudo
  • quiero instalar gemas sin sudo
  • no quiero instalar rvm / rbenv

agregue lo siguiente a su .bash_profile :

export GEM_HOME=/Users/‹your_user›/.gem export PATH="$GEM_HOME/bin:$PATH"

Abre una nueva pestaña en la source ~/.bash_profile OR Terminal source ~/.bash_profile y listo.


Mejor aún, ponga --user-install en su archivo ~ / .gemrc para que no tenga que escribirlo cada vez

gem: --user-install


Puede instalar gemas en una carpeta específica (ejemplo vendor /) en su aplicación Rails usando:

bundle install --path vendor


Relacionado (para usuarios de bundler), si desea una alternativa más ligera a RVM que ubique todo en un directorio bien conocido y específico del usuario, le recomiendo usar:

bundle install --path $HOME/.gem

si quieres instalar gemas en el mismo lugar que

gem install --user-install GEMNAME

los instalará, .gem/ruby/RUBYVERSION en tu hogar. (Vea el otro comentario sobre esta pregunta sobre --user-install .)

Esto hará que las gemas sean visibles para la gem list , que pueden desinstalarse mediante la gem uninstall , etc. sin necesidad de tener acceso a sudo . Los scripts ejecutables instalados por gem o bundler se pueden poner en su camino agregando

$HOME/.gem/ruby/RUBYVERSION/bin

a tu $PATH . gem sí misma le informa sobre esto si no está configurada cuando usted gem install --user-install .


También puede instalar gemas en su entorno local (sin sudo ) con

gem install --user-install <gemname>

Lo recomiendo para que no se meta con la configuración de su sistema, incluso si se trata de una computadora de un solo usuario.

Puedes verificar a dónde van las gemas observando las gemas con el gem environment . En mi caso es "~ / .gem / ruby ​​/ 1.8".

Si necesita algunos binarios de instalaciones locales agregadas a su ruta, puede agregar algo a su bashrc como:

if which ruby >/dev/null && which gem >/dev/null; then PATH="$(ruby -rubygems -e ''puts Gem.user_dir'')/bin:$PATH" fi

(de http://guides.rubygems.org/faqs/#user-install )


sudo gem install --no-user-install <gem-name>

instalará su joya globalmente , es decir, estará disponible para todos los contextos de usuario.