2011-04-05 7 views
19

Estoy confundido acerca de si, en un servidor, se supone que debes instalar RVM como un usuario normal o hacer una instalación en todo el sistema, y, en este último caso, cómo se supone que debes hacer cosas como bundle install sin usar sudo.¿Es una mala idea una instalación de RVM en todo el sistema?

¿Hay algún conjunto de directrices definitivas sobre lo que se supone que debes hacer en RVM en un servidor que ejecuta Rails en virtud de, por ejemplo, la RVM? Pasajero y Nginx? En este tipo de entorno, no todos los procesos de Ruby se ejecutan bajo el mismo usuario, por lo que creo que es donde las cosas no quedan claras en lo que respecta a RVM y bundler.

¿Qué tal si evitamos RVM en el servidor y solo instalamos Ruby y gemas a la antigua usanza? ¿Es preferible si puedes salirte con la tuya?

+0

las opiniones de los expertos son valiosas –

Respuesta

6

Puede instalar RVM como un usuario normal, aunque no veo el punto. Bundler es por aplicación y no necesita privilegios sudo, ya que puede instalar gemas en un directorio de paquete que el paquete de instalación usuario puede acceder con, por ejemplo:

bundle install --deployment 

el que los pondrá en vendor/bundle por defecto.

Creo que RVM es una herramienta de desarrollo para gestionar múltiples versiones de ruby. En las máquinas de implementación, suelo usar el sistema Ruby o instalarlo desde la fuente.

+0

"En las máquinas de implementación, suelo usar el sistema Ruby o instalar desde la fuente". Convenido. Yo hago lo mismo. –

+0

Entonces quizás sea mejor no usar RVM si puede evitarlo, en el servidor. – dan

3

RVM puede instalarse como superusuario. Si bien no es necesario, existen muchas ventajas al hacerlo (especialmente en un sistema multiusuario). Todos los comandos que vienen con Ruby (y gemas de Ruby asociadas) deben tener sus permisos configurados correctamente para que se ejecuten adecuadamente. Bundle no requiere el acceso de superusuario para ser utilizado. Puede ejecutarse bajo un usuario particular, al igual que la instalación de gemas puede ser local para un usuario o para todo el sistema cuando se completa con un sudo completo.

RVM solo administra sus instalaciones particulares de Ruby, para que pueda desarrollar en múltiples niveles de Ruby, desde RMI 1.8 y 1.9 hasta JRuby 1.6, etc. Puede tener diferentes proyectos en los que esté trabajando y, por lo tanto, necesite diferentes necesidades por proyecto.

En lo que respecta a un servidor en sí (suponiendo que sea un servidor externo con algún tipo de contenido), eso solo depende de los administradores del sistema. El caso de uso cambia un poco. Si solo necesita Ruby 1.9 en el servidor, realmente no hay necesidad de RVM. Porque administrar múltiples versiones de Ruby no es obligatorio. Así que lo tomaría en cuenta cuando decida si va a todo el sistema en un servidor.

Espero que ayude!

+3

En realidad, NO se recomienda instalar como raíz para la mayoría de los propósitos. Nunca hago una instalación raíz para máquinas de desarrollo. Es mucho mejor tener un '~/.rvm' autónomo para un solo sistema de usuario. –

+0

Eso es más una preferencia que un requisito. Es extremadamente útil tenerlo disponible para todos los usuarios por otros motivos. Por ejemplo, si quiero imitar mi entorno de producción más de cerca con otro usuario, no tengo que pasar por el dolor de reinstalar RVM en otro usuario. Depende de cómo estás acostumbrado a trabajar. –

+1

"RVM está destinado a instalarse como superusuario". Incorrecto. Su objetivo inicial era un sandbox de usuario para el desarrollo. Ha desarrollado la capacidad de ser utilizado en todo el sistema, pero su principal fortaleza sigue siendo la zona de pruebas de un usuario. Con 1.5+ ha cambiado más; Los documentos están en transición según el comentario de Wayne aquí hace unas semanas. –

4

Recomiendo encarecidamente hacer una instalación en todo el sistema para un entorno de producción. Ejecutar RVMs específicos para el usuario simplemente parece una gran molestia. Uso Passenger/Nginx en producción y cada proyecto tiene sus propios usuarios. Todo lo que tengo que hacer es agregarlos al grupo rvm y estoy listo para continuar.

+0

¿Tienes una guía donde sea? Traté de usar una instalación para producción en todo el sistema y tenía rubíes y conjuntos de gemas por separado para cada proyecto. Sin embargo, fue un dolor configurar Nginx/Passenger para usar el ruby ​​/ gemset correcto. También encontré que los comandos como establecer el ruby ​​/ gemset predeterminado 'rvm use ree @ gemset --default' afectaron a todo el sistema, independientemente del usuario con el que inicié sesión. Otra pregunta: ¿Ustedes también usan archivos .rvmrc para cada proyecto? – John

+1

Siempre creo un 'setup_load_paths.rb' según https://rvm.beginrescueend.com/integration/passenger/ –

+0

Gracias por la respuesta, jcm. ¿Requiere ese método que 'MY_RUBY_HOME' se configure como una variable de entorno para cada proyecto/usuario? – John

Cuestiones relacionadas