Instalación de Ruby on Rails en macOS y Windows 10
Nuestro objetivo es instalar el entorno de desarrollo necesario para desplegar aplicaciones con Ruby on Rails incluyendo gestores de versiones, consola de comandos y base de datos en computadores mac usando macOS 10.15 Catalina y Windows 10.
Recomendaciones
No copies y pegues los comandos de la guía dado que en algunas ocasiones podrían tener caracteres especiales de formato que podrían dañar la ejecución de los mismos, por otro lado, la instalación se realiza sobre un sistema operativo recién instalado, si tienes una instalación previa puedes encontrar que algunas respuestas de tus comandos sean diferentes.
Convenciones
~ %(consola de comandos) (debes traspasar el comando sin el símbolo "~ %")
#=>(salida de comando)
[](Opcional)
<consola cursiva>(texto que hay que añadir o quitar acorde a la explicación del paso)
Instalación de Ruby, RoR en Mac
Introduccion
Al igual que en la instalación del entorno para Linux, vamos a usar el framework de configuración oh-my-zsh aprovechando además que en Catalina, nuestra shell por defecto es zsh. Para hacerlo debes en la terminal de comandos colocar la siguiente instrucción, que encontrarás en la página oficial de github de oh-my-zsh https://github.com/ohmyzsh/ohmyzsh#via-curl
~% sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
A continuación te mostraré una respuesta completa de este comando (debes ver esto después de la ejecución del comando incluyendo la pregunta de cambio de consola)
__ __
____ //_ ____ ___ __ __ ____ _____//_
/ __ \/ __ \ / __ `__ \/////_ // ___/ __ \
//_////////////_////_(__ )///\____/_//_//_//_//_/\__,//___/____/_//_//____/....is now installed!Please look over the ~/.bashrc file to select plugins, themes, and options.p.s.Follow us on https://twitter.com/ohmyzsh
p.p.s.Get stickers, shirts, and coffee mugs at https://shop.planetargon.com/collections/oh-my-zsh
Al final de tu proceso deberás ver tu consola con un nuevo estilo como el siguiente:
➜ ~
Después de instalar oh-my-zsh debemos instalar un gestor de paquetes, en nuestro caso usaremos Homebrew (ampliamente usado en el mundo de desarrollo de software), puedes seguir las indicaciones de la instalación desde la siguiente pagina https://brew.sh/ y digitar la siguiente instruccion:
Una vez instalado homebrew usamos rbenv como gestor de versiones de Ruby, de igual manera que lo hicimos para la instalación del ambiente de Linux (puedes ir la sección Instalando RBENV en la lectura Instalación Entorno de Desarrollo para que obtengas más información).
➜ ~ brew install rbenv ruby-build
Luego debemos añadir al archivo .bashrc una configuración de inicialización del RBENV
➜ ~ echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi'>>~/.bashrc➜ ~ source ~/.bashrc
Una vez instalado RBENV vamos a proceder a instalar la versión de ruby 2.7.1 y a establecerla por defecto
➜ ~ rbenv install 2.7.1➜ ~ rbenv global 2.7.1
Ahora, vamos a configurar GIT usando nuestro nombre y cuenta de correo habitual
Para poder mantener los espacios de librerías de forma consistente entre versiones y manifiestos usaremos BUNDLER, la cual es una librería que nos permitirá gestionar a su vez un conjunto de librerías de ruby agrupadas por entornos de trabajo y garantizando la consistencia de versiones y dependencias entre las mismas.
En Ruby, las librerías son llamadas gemas, y bundler usa un archivo manifiesto llamado Gemfile para listar todas las gemas que un proyecto tendrá, bundler puede usar varias fuentes para encontrar de forma pública estas librerías en la nube, sin embargo, nosotros vamos a usar dos fuentes rubygems y github.
Para instalar Bundler (que también es una gema) usaremos el comando gem que es proveído en este caso por RBENV. También habilitaremos el protocolo seguro de HTTP para que cuando se tome github como fuente este sea establecido por defecto.
Rails necesita de un motor de javascript para abordar ciertas funcionalidades de compilación, transformación y en sus últimas versiones, funcionalidades de integración con webpack, es por esta razón que vamos a usar nodejs como nuestro motor, sin embargo, NodeJS podría tener la misma situación de conflicto de versiones entre ambientes, por lo que que usaremos también un gestion de versiones de NodeJS para lidiar con estos escenarios.
NOTA si ya tienes instalado NodeJS u otro motor de javascript compatible con el intérprete de javascript V8 o similar, no deberás hacer este paso, aunque es ampliamente recomendable usar un gestor de versiones, si lo quieres llegar a usar debes desinstalar el intérprete de javascript que tengas instalado para evitar conflictos futuros.
Para gestionar las versiones de NodeJS usaremos NODENV ejecutando la siguiente secuencia de comandos, que instalará el NODENV, añadirá sus binarios a la variable de entorno PATH, e instalará la versión 12.17.0 de NodeJS.
Instalando el ambiente de desarrollo con Rails y PostgreSQL
Habiendo instalado RBENV y BUNDLER ya podemos empezar a instalar todas las gemas, herramientas y servidores necesarios para poder seguir adelante con nuestros primeros pasos con Ruby on Rails
Vamos a instalar Ruby on Rails usando el siguiente comando (si, Rails es también una gema)
$ gem install rails
Rails instalará con varias gemas como dependencias para su ejecución, así que obtendremos una instalación con una larga lista de librerías, al final podrás corroborar la versión de Rails usando el comando de abajo, que en nuestro caso será la versión 6.0.3.2
$ rails -v
#=>Rails6.0.3.2
Las versiones de Rails superiores a la 6, requieren usar YARN como gestor de paquetes de javascript y habilitar el enlace de Webpack usando la tecnología Webpacker, para esto, vamos a usar nuevamente Homebrew
$ brew install yarn
Finalmente, vamos a instalar la base de datos de postgreSQL y configurar un usuario para poder gestionarla
$ brew install postgresql
Una vez instalado iniciaremos el servicio de la base de datos
$ brew services start postgresql
Una vez inicializado postgreSQL, entraremos a la sesión del mismo y crearemos desde allí un nuevo usuario con capacidad de crear bases de datos (de usuario platzi, rol platzi y contraseña platzi), y que usaremos para nuestras futuras aplicaciones, para hacerlo debemos seguir el siguiente conjunto de instrucciones (No tener en cuenta el prefijo postgres=# para su ejecución):
Para salir de la sesión de postgreSQl debemos usar el comando \q
Instalación de Ruby, RoR en Windows 10
La instalación del entorno de desarrollo en Windows la haremos usando un subsistema de windows para Linux, de esta forma podrás usar una consola tipo Linux que te facilitara la ejecución de instrucciones y hará que tu sistema operativo sea más compatible con la documentación que encuentres en este curso y en la internet.
Como te he mencionado arriba, Windows 10 te permite correr una virtualización nativa de Linux , y usaremos este entorno para instalar todas nuestras herramientas, para preparar nuestro sistema operativo debemos abrir un PowerShell y ejecutalo como administrador como es referenciado en la imagen de abajo.
Una vez allí, ejecuta las siguientes tres instrucciones
Seguido de esto, vamos a abrir el Microsoft Store, buscar el paquete de Ubuntu 20.04 LTS e instalarlo
Una vez instalado, debemos buscar y ejecutar el paquete Ubuntu 20.04 desde el buscador de Windows, al inicio este nos solicitara que creemos un usuario y una nueva contraseña, para nuestro caso será platzi
NOTA IMPORTANTE
No debes usar el usuario superusuario (root) a menos que de forma explícita se especifique que este debe ser usado a través del comando “sudo”, de otra forma no debes usarlo así como tampoco sus variaciones como “$ sudo su”
El programa “sudo” pronunciado “SUDU” /suːduː/ es normalmente interpretado como “superuser do…” y permite al comando inmediatamente siguiente, correr con los permisos de otro usuario que tiene condiciones especiales de seguridad o permisos, comúnmente sudo se usa para invocar los permisos del superusuario del sistema operativo, sin embargo, en las últimas versiones de sistemas compatibles con Linux no sólo puede ejecutar como superusuario sino también es posible usar otros tipos especiales de usuario. Sin embargo, nosotros usaremos “sudo” para usar los permisos de superusuario.
Adecuación del sistema operativo
Instalación de librerías base
Usando sudo y y el comando apt-get (como gestor de paquetes) vas a actualizar los enlaces a los repositorios de las librerías que se pueden instalar en el sistema operativo así como sus dependencias.
$ sudo apt-get update
Deberás obtener una respuesta de varias líneas al comando con la actualización de la lista de paquetes y una línea final mencionado que la lectura de las listas de paquetes ha sido finalizada similar a lo siguiente:
Readingpackage lists...Done
Ahora vamos a instalar las librerias necesarias usando sudo y el comando apt install
Para autorizar la instalación deberás aceptar la continuación del proceso digitando la letra Y y dando enter
Do you want to continue?[Y/n]
Las librerías instaladas cumplirán con los siguientes propósitos:
build-essentials: contiene herramientas para compilar y construir software desde sus fuentes usando generalmente lenguaje C y sus derivados
curl: es una herramienta para transferir información de un servidor a otro usando diversos tipos de protocolos, entre esos: HTTP, FTP, IMAP entre otros
wget: es una herramienta para recibir contenido desde la web usando los protocolos más comunes como HTTP y FTP
openssl: es un robusto conjunto de librerías que te permitirán manipular y leer contenido de los protocolos TLS y SSL, que son usados para garantizar la seguridad y encriptación de las comunicaciones entre servidores y clientes.
libssl-dev: es una librería que forma parte de OpenSSL usada para lidiar con procesos de encriptación, este paquete, contiene librerías de desarrollo, cabeceras de compilación entre otro tipos de archivos.
libreadline-dev: aporta la librerías de desarrollo para el paquete readline que ayuda a la consistencia de interfaces de usuario que están asociadas a líneas interactivas de comandos.
dirmngr: es un pequeño servidor para gestionar y descargar certificados de tipo X.509 y la lista de revocación de los mismos.
zlib1g-dev: aporta librerías de desarrollo para soportar mecanismos de compresión y descompresión compatibles con GZIP y PKZIP, tecnologías de compresión comunes en paquetes de herramientas para nuestro entorno.
imagemagick-6.q16: es un programa que permite editar, crear y componer mapas de bits en imágenes.
libmagickwand-dev: es un conjunto de librerías de desarrollo para compilar librerías necesarias para el uso de MagickWand, este último es la tecnología predilecta como interface del lenguaje de programación C a ImageMagick.
libffi-dev: provee librerías de desarrollo para habilitar mecanismos de alto nivel para el uso de calling conventions sobre ciertos compiladores, de esta forma esta librería le permite al desarrollador invocar cualquier función específica por medio de una llamada en tiempo de ejecución.
libpq-dev: esta librería contiene paquetes de desarrollo para habilitar el uso de conjuntos de binarios y cabeceras requeridas para construir componentes externos para PostgreSQL
cmake: es usado para controlar el proceso de compilación de software usando un método independiente del compilador.
libwebp-dev: habilita un conjunto de librerías de desarrollo para el manejo de formatos de imágenes de nueva generación compatibles con WebP
Instalación de GIT
A continuación instalaremos nuestro sistema para controlar versiones de nuestro código, para este caso usaremos GIT, y procederemos a su instalación usando el siguiente comando
$ sudo apt install git
Una vez instalado GIT configuraremos de forma global algunas variables
Solo si tu conexión a internet está habilitada a través de un proxy (muy común en las instituciones públicas) debemos configurarlo de la siguiente manera
Imagina que estás trabajando en varios proyectos con Ruby y Ruby on Rails, y que todos tengan diferentes versiones… ¿cómo haces para garantizar que todas librerias, versiones y paquetes sean consistentes en cada uno de los proyectos?
Bien, para resolver esto debemos usar gestores de versiones, en este caso usaremos RBENV, no debes confundirte con controladores de versiones (como GIT), son dos tecnologías con propósitos distintos, pero que se complementan.
Para instalar RBENV debemos ejecutar el siguiente comando
Al final de la ejecución del comando deberás ver un texto similar a este, mencionando que a pesar de haber instalado RBENV este no se encuentra en la variable de entorno PATH
Running doctor script to verify installation...Checkingfor`rbenv' in PATH: not found
You seem to have rbenv installed in `/home/platzi/.rbenv/bin', but that
directory is not present inPATH.Please add it to PATH by configuring
your `~/.bashrc', `~/.bashrc', or `~/.config/fish/config.fish'.
Para añadir a la variable de entorno PATH los binarios de RBENV y a su vez ejecutarlo cada vez que exista una nueva sesión, debemos agregar dos líneas al archivo .bashrc que habíamos visto antes, pero esta vez solo usaremos la consola para hacerlo, de la siguiente manera:
Una vez instalado RBENV vamos a usarlo para instalar la versión 2.7.1 ejecutando lo siguiente (la instalación suele tardar unos minutos, así que asegurate de tener una buena velocidad y estabilidad de internet)
$ rbenv install 2.7.1
RBENV está en la capacidad de gestionar un sin número de versiones de ruby así como sus espacios de librerías de forma independiente, así que vamos a establecer la versión 2.7.1 como la versión por defecto y global, usando el siguiente comando.
$ rbenv global 2.7.1
Para poder mantener los espacios de librerías de forma consistente entre versiones y manifiestos usaremos BUNDLER, la cual es una librería que nos permitirá gestionar a su vez un conjunto de librerías de ruby agrupadas por entornos de trabajo y garantizando la consistencia de versiones y dependencias entre las mismas.
En Ruby, las librerías son llamadas gemas, y bundler usa un archivo manifiesto llamado Gemfile para listar todas las gemas que un proyecto tendrá, bundler puede usar varias fuentes para encontrar de forma pública estas librerías en la nube, sin embargo, nosotros vamos a usar dos fuentes rubygems y github.
Para instalar Bundler (que también es una gema) usaremos el comando gem que es proveído en este caso por RBENV. También habilitaremos el protocolo seguro de HTTP para que cuando se tome github como fuente este sea establecido por defecto.
Rails necesita de un motor de javascript para abordar ciertas funcionalidades de compilación, transformación y en sus últimas versiones, funcionalidades de integración con webpack, es por esta razón que vamos a usar nodejs como nuestro motor, sin embargo, NodeJS podría tener la misma situación de conflicto de versiones entre ambientes, por lo que que usaremos también un gestion de versiones de NodeJS para lidiar con estos escenarios.
NOTA si ya tienes instalado NodeJS u otro motor de javascript compatible con el interprete de javascript V8 o similar, no deberás hacer este paso, aunque es ampliamente recomendable usar un gestor de versiones, si lo quieres llegar a usar debes desinstalar el intérprete de javascript que tengas instalado para evitar conflictos futuros.
Para gestionar la versiones de NodeJS usaremos NODENV ejecutando la siguiente secuencia de comandos, que instalará el NODENV, añadirá sus binarios a la variable de entorno PATH, e instalará la versión 12.17.0 de NodeJS.
Instalando el ambiente de desarrollo con Rails y PostgreSQL
Habiendo instalado RBENV y BUNDLER ya podemos empezar a instalar todas las gemas, herramientas y servidores necesarios para poder seguir adelante con nuestros primeros pasos con Ruby on Rails
Vamos a instalar Ruby on Rails usando el siguiente comando (si, Rails es también una gema).
$ gem install rails
Rails instalará con varias gemas como dependencias para su ejecución, así que obtendremos una instalación con una larga lista de librerías, al final podrás corroborar la versión de Rails usando el comando de abajo, que en nuestro caso será la versión 6.0.3.2
$ rails -v
#=>Rails6.0.3.2
Las versiones de Rails superiores a la 6, requieren usar YARN como gestor de paquetes de javascript y habilitar el enlace de Webpack usando la tecnología Webpacker, para esto, vamos a usar la versión oficial de los repositorios de YARN a través de los siguientes comandos
Para instalar YARN vamos a usar el comando de abajo, y usaremos nuestra versión de NodeJS instalada en el paso anterior usando la opción --no-install-recommends
$ sudo apt --no-install-recommends install yarn
Finalmente, vamos a instalar la base de datos de postgreSQL descargando el ejecutable desde esta pagina https://www.postgresql.org/download/windows/ recuerda el usuario y la contraseña que asignes en el proceso de instalación, dado que lo necesitaremos para la configuración de Rails.
Accediendo a mi código
Para usar el sistema de directorios de windows dentro del ambiente de Linux, debes utilizar la siguiente instrucción que accederá a la raíz de la unidad C y a partir de allí ejecutar tus comandos
$ cd /mnt/c
Alli podras crear directorios de trabajo que podrás acceder desde cualquier editor de texto en tu entorno windows, para nuestro curso haremos el directorio coding/platzi
Hola, cuando intenté instalar RBENV tuve un error 404 y revisando un poco en internet cambio la url. Pueden utilizar el siguiente comando para instalarlo.
Nota: a día 24 de julio en este tutorial (para la parte de Windows), en la segunda línea de comando para configurar rbenv, hay un pequeño error: falta " ~/ " antes de .bashrc, es decir:
echo 'eval "$(rbenv init -)"'>>~/.bashrc
Si no es ejecutada correctamente esta línea, el sistema no va a reconocer el PATH de los ejecutables de ruby (al menos esto es lo que sucedió en mi experiencia).
También faltaría aclarar que, después de ejecutar esos comandos, debemos reiniciar la consola para que tomen efectos los cambios.
Para los que tengan wsl2 o ubuntu aquí les dejo un link
Instalar ruby on rails
Gracias por el aporte!
Para los que quieren instalr oh-my-zsh desde windows
rbenv already seems installed in `/usr/bin/rbenv'.
Installing ruby-build with git...
Cloning into '/home/andres_kintero/.rbenv/plugins/ruby-build'...
fatal: unable to access 'https://github.com/rbenv/ruby-build.git/': Could not resolve proxy: http
Por el mensaje que te aparece "Could not resolve proxy: http" pensaría que no es necesario que configures el proxy las config global de git.
una consulta puedo hacer aplicaciones de consola teniendo instalado ruby rails?
Tengo que usar estas credenciales para configurar git?
git config --global user. name "Johan Tique"
$ git config --global user .email johan@platzi.co
Tienes que usar tus credenciales, o sea, tu usuario de GitHub y tu correo registrado en GitHub
rbenv global 2.7.1 esta fuera de soporte, sera buena idea usarla para seguir el curso?
Tengo un error con el repositorio alguien me puede ayudar
Clonar un repositorio e intentar agregar su propio servidor remoto al "origin" sin darse cuenta de que ese nombre ya está en uso es algo muy común, la solución es usar git remote set-url en lugar de git remote add.
Avisame como te va con esta sugerencia.
Lo primero es confirmar si Ruby en realidad ya está instalado correctamente. Puedes usar el comando:
ruby --version
La forma más fácil de instalar Ruby en Ubuntu es haciendo la instalación de forma “tradicional”:
sudo apt update sudo apt install ruby-full
Pero la forma recomendada de instalarlo es con Rbenv para que puedas cambiar fácil entre versiones de Ruby en el futuro.
El comando que ejecutaste es el correcto para esa instalación, pero el error que te aparece da la impresión de que ha ejecutado el comando varias veces. Eso puede ser porque en realidad Ruby ya está instalado o porque se interrumpió la instalación a medio camino.
Para tratar de solucionarlo, podrías ejecutar el comando
/home/andres_kintero/.rbenv/.git/
y volver a empezar la instalación.
como se si quedaron montadas mis credenciales de git ??
Hola @afquintero89836, para chequear tu configuración en git podés probar el siguiente comando: git config --list
Me pide el password para el user que hice y a pesar de que si es el correcto me dice que no... hay manera de resetearlo?
Saludos
Hola, podrías por favor mostrarme un pantallazo de la salida del comando, por otro lado nodenv te provee una forma de lidiar con la instalación de node y sus múltiples versiones, pero puedes optar por hacer una instalación más simple u otra tipo de instalación si así lo deseas, el resultado al final es tener instalado una versión estable de node.
Siguiendo la instalación en Windows 10 he tenido problemas al instalar bundler, para aquellos que visualicen el mismo error _(ERROR: Could not find a valid gem 'bundler' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - timed out) _ me ha funcionado asignar prioridad al protocolo IPv4 como se indica en el siguiente aporte: https://stackoverflow.com/a/50349235/20978536
Hola buen dia, tengo un problema con la instalacion de la version 2.7.1 de rbenv, Agradezco su colaboracion
platzi@LAPTOP-H6QU6QKG:~$ rbenv install 2.7.1Installing ruby-2.7.1...BUILDFAILED(Ubuntu20.04 using ruby-build 20210119)Inspect or clean up the working tree at /tmp/ruby-build.20210120215832.22980.JHRNxFResults logged to /tmp/ruby-build.20210120215832.22980.logLast10 log lines:checking for ruby...falsechecking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error:in`/tmp/ruby-build.20210120215832.22980.JHRNxF/ruby-2.7.1':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
platzi@LAPTOP-H6QU6QKG:~$ rbenv global 2.7.1rbenv: version `2.7.1' not installed
Me sale lo mismo. No he encontrado una solución. :(
Hola, es posible que hayan cambiado los requerimientos de las librerias en las ultimas semanas, y al ser un problema del ruby-build, debemos remitirnos al Suggested build environment o entorno base sugerido, acorde a la documentación aqui pueden probar instalando las siguientes liberias:
algunas librerias podrían no instalarse debido a que ustedes ya podrían tener una versión superior de las mismas
Repositorio de github para ver como instalar rbenv.
me pide contraseña al iniciar con psql postgres
Hola Adrian, asumiendo que estás en windows, la contraseña normalmente es creada y solicitada al momento de la instalación del servidor, si ya tenías una versión instalada debes recuperar la constraseña que venías usando para administrar tu base de datos.
Hey que tal Adrian, quisiera saber si lograste resolver el problema?