Instalar el entorno de desarrollo necesario para desplegar aplicaciones con Ruby on Rails incluyendo librerías, consola de comandos, base de datos y editor de texto en ambientes de escritorio compatibles con linux, usando Ubuntu 20.04 LTS.
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)
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
Por defecto nuestro sistema operativo está usando la consola BASH, que es genial, sin embargo, vamos usar un entorno aún más productivo integrando una nueva consola y un framework para configurar la misma.
La nueva consola que usaremos será ZSH, y el framework de configuración será oh-my-zsh (pronunciado <o mai si shel> [əʊ maɪ siː ʃɛl]); primero instalaremos la consola de la siguiente forma:
$ sudo aptitude install zsh
Luego instalaremos el framework oh-my-zsh con la ejecución comando de abajo, durante el proceso de instalación te va a preguntar si deseas cambiar tu consola por defecto a ZSH, a lo que debes responder afirmativamente
$ 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)
Time to change your default shell to zsh:**Do you want to change your default shell to zsh?[Y/n]** y
Changing the shell...Password:Shell successfully changed to '/usr/bin/zsh'.__ __
____ //_ ____ ___ __ __ ____ _____//_
/ __ \/ __ \ / __ `__ \/////_ // ___/ __ \
//_////////////_////_(__ )///\____/_//_//_//_//_/\__,//___/____/_//_//____/....is now installed!Please look over the ~/.zshrc 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:
➜ ~
Para corroborar que el proceso se finalizó con normalidad deberás cerrar tu sesión de usuario y volver a ingresar, y abrir tu consola de comandos, esta deberá verse de la siguiente forma:
Después de haber instalado el framework y la consola con éxito, vamos a fortalecer nuestro framework oh-my-zsh vinculando algunos plugins, el primero de ellos lo debemos descargar, se trata del plugin zsh-syntax-highlighting.
Para descargarlo e instalarlo debemos ir al directorio de plugins de oh-my-zsh y clonar el repositorio del plugin
➜ ~ cd ~/.oh-my-zsh/custom/plugins
➜ ~ git clone git://github.com/zsh-users/zsh-syntax-highlighting.git
Para proceder con la habilitación de los plugins incluyendo el anterior, vamos a acceder al archivo .zshrc (archivo de run commands de zsh) y desde allí buscar la línea donde a través de un arreglo será pasados todos los plugins que queremos que sean habilitados, normalmente es la línea 71 y comienza con el texto plugins=(git)
➜ ~ cd
➜ ~ gedit ~/.zshrc
Dentro de este archivo, reemplazamos la línea anteriormente mencionada por lo siguiente:
Finalmente, en el mismo archivo pero al final de este, vamos a añadir una de estas dos opciones:
Si usas lenguaje inglés y tu teclado está en inglés añadirás lo siguiente:
# Setting up a clean UTF-8 environment
exportLANGUAGE=en_US.UTF-8exportLC_ALL=en_US.UTF-8
Si usas lenguaje español y tu teclado está en español añadirás lo siguiente:
# Setting up a clean UTF-8 environment
exportLANGUAGE=es_CO.UTF-8exportLC_ALL=es_CO.UTF-8
Esta opción nos permitirá tener claridad sobre la codificación de caracteres usada en nuestro entorno. Para guardar toda la configuración generada debes usar CTRL + S si estás usando gedit como editor de texto.
Para actualizar las configuraciones generadas en tu archivo .zshrc tendrás dos opciones o cierras y vuelves a abrir tu consola de comandos, o en la raíz de tu directorio de usuario deberás ejecutar el siguiente comando:
➜ ~ source ~/.zshrc
Hasta aquí no deberías tener ningún inconveniente, sin embargo, sólo si llegas a obtener algún error similar a compdef: unknown command or service: rails deberás hacer lo siguiente
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', `~/.zshrc', 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 .zshrc 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.1
➜ ~ rails -v
#=>Rails6.0.3.1
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 y configurar un usuario para poder gestionarla, lo primero que debes hacer es configurar las listas de los repositorios
Una vez instalado 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@ubuntu:~$ para su ejecución):
➜ ~ sudo -i -u postgres
postgres@ubuntu:~$ createuser --pwprompt --interactive platzi
#=>Enter password fornewrole:******(platzi)#=>Enter it again:******#=>Shall the newrole be a superuser?(y/n) n
#=>Shall the newrole be allowed to create databases? y
#=>Shall the newrole be allowed to create more newroles?(y/n) n
Para salir de la sesión de postgreSQl debemos usar el comando exit
postgres@ubuntu:~$ exit
Instalación del editor de texto
Vamos a instalar el editor de texto Atom, primero añadiremos sus listas de paquetes oficiales y luego procederemos a su instalación
Una vez instalado nuestro editor de texto, iremos a la raíz de nuestra consola de comandos, y crearemos los directorios coding/platzi con el comando mkdir (make directory), la opción -p nos permite crear directorios anidados de forma concatenada si estos no existen previamente.
➜ ~ mkdir -p coding/platzi
Accederemos dentro de este directorio, para posteriormente invocar al editor a través del siguiente comando
➜ ~ coding/platzi
➜ ~ atom .
Al ejecutar el comando deberás ver la interfaz gráfica del editor de la siguiente manera
Finalmente vamos a instalar y habilitar algunos paquetes que complementarán tus procesos de desarrollo.
Paquete autosave
Este paquete debemos habilitarlo, para hacerlo debemos sobre el Atom usar la combinación de teclas CTRL + , clickear la opción Packages, para luego buscar el paquete autosave, seleccionarlo y finalmente habilitarlo.
Instalación de paquetes
En la misma pantalla de de configuración, ahora debes clickear install y allí procederemos a buscar e instalar cada uno de los siguientes paquetes:
Para la consola de comando podrás usar los siguientes comandos y atajos, los cuales iremos abordando en el transcurso del curso
# gestión de archivos y carpetas
$ cd *<nombre_de_carpeta>* # ingresar a un directorio
$ ls # ver el contenido del directorio
$ cp *<nombre_archivo>**<nombre_archivo_2>* # copiar un archivo especificando sus nombres
# GIT$ ga . # atajo de `git add .`$ gc -m ‘’ # atajo de `git commit -m ‘’`$ gco # atajo de `git checkout`$ gp # atajo de `git push`# Rails$ rs # atajo de `rails server`$ rc # atajo de `rails console`
$ bi # atajo de bundle install
Dentro del editor de texto Atom puedes encontrar útil estos comandos
CTRL+P # Buscar archivos y carpetas dentro del proyecto
CTRL+SHIFT+P # Buscar comando derivado de los paquetes instalados
CTRL+K+B # collapsar o expandir el arbol de directorio
CTRL+D # ejecutado varias veces, seleccionará las coincidencias del término enfocado
CTRL+SHIFT+D # duplicar línea
CTRL+<flechas arriba/abajo> # mover la línea hacia abajo o arriba
ALT+ \ # enfocar y navegar el árbol de directorios
SHIFT+A # enfocado el árbol de directorios, creará una carpeta
A # enfocado el árbol de directorios, creará un archivo
D # enfocado el árbol de directorios, duplicará un archivo
F2 # enfocado el árbol de directorios, renombrará un archivo
CTRL+F # buscar un término dentro del archivo abierto
CTRL+SHIFT+F # buscar un término en todo el proyecto
¡Excelente el tutorial! Solo dos aspectos que quizás se escaparon (o por lo menos en mi caso causaron mensajes de error):
aptitude no estaba instalado. Se instala con el comando: sudo apt install aptitude.
En los tutoriales siguientes cuando se quiere crear la aplicación de ejemplo se debe instalar sqlite3 por eso se debería instalar aquí de una vez. El comando es: sudo apt install sqlite3 libsqlite3-dev.
Déjame decirte que eres un crack!
Me salvaste la vida!
Para instalar el plugin de syntax-highligh me sale un error de unauthenticated git protocol, así que actualice la primera parte de la url por https y funciona, así: git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
Gracias!!! tenia ese mismo problema y no sabia como resolverlo
Gracias!
Guia de instalacion muy desactualizada, es necesaria una nueva URGENTE.
Trabajas con Ruby en Windows 11 puro es un dolor de cabeza, entonces instale el WSL de Windows para usar esta guía y funciona mucho mejor. El comando sudo aptitude install zsh no me funcionó, pero me funcionó con sudo apt-get install zsh
si no te funciona el:
sudo aptitude install zsh
prueba con:
sudo apt-get install zsh
Hola chicos les dejo estos aportes https://gorails.com/setup/ubuntu/21.04 es para utilizar RVM como manejador de versiones de ruby, pero si pueden aprender a usar docker con ruby, mas que todo para los que aun programan en Windows les arreglara la vida :), https://platzi.com/clases/docker/ --> curso de Docker, y si les gusta ruby tómenselo con calma y aprenderán muchísimo.
PD: hagan este curso de prework si no quieren dejar Windows mas que todo por los que solo tenemos una maquina y nos gustan los video juegos https://platzi.com/clases/prework-windows/.
maravilloso tutorial
Hola, al crear el usuario me sale este error, hice todos los pasos en el subsistema de linux para windows
Ingrese la contraseña para el nuevo rol:
Ingrésela nuevamente:
¿Será el nuevo rol un superusuario? (s/n) n
¿Debe permitírsele al rol la creación de bases de datos? (s/n) s
¿Debe permitírsele al rol la creación de otros roles? (s/n) n
createuser: error: no se pudo conectar a la base de datos template1: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
¿porqué cuando hago rails new mi_proyecto crea los archivos .gitattributes **.gitignore **y la carpeta .git ?
Hola!
Esos archivos son para configurar un repositorio de github, así que supongo que te facilita al trabajo al indicar cuáles archivos necesitan crearse y necesitan ser ignorados por git. No afectan tu proyecto, pero no los borres. Te recomeindo tomar el Curso Profesional de Git y GitHub
Y toda esa instalación como se procede en windows?
Hola Jonathan, puedes ir a la siguiente clase para revisar el proceso de instalación en Windows, te recomiendo que si te es posible trabajes con Linux, la comunidad de Ruby y Rails es muy fuerte en este S.O.
Sino funciona el del plugin como fue mi caso, también está este para la consola de zsh directamente: que se puede revisar en la documentación
Para usar ruby on rails les recomiendo AWS Cloud 9. Es un IDE como Visual studio code, pero en al nube, donde fácilmente puedes crear maquinas virtuales y tener separadas distintas versiones de ruby/rails para cada proyecto.
Excelente tutorial... Por mi parte me gusta usar VS Code, así que si alguien más le gusta, puede instalarlo fácilmente con estos comandos en la terminal:
Aquí la documentación de cada una para que sepan sus funciones:
Sublime Text Keymap and Settings Importer
VSCode Great Icons
Live Share
Ruby
ESLint
Maravilloso. Gracias por el aporte.
Yo utilizo para el manejo de versiones de gemas RVM en lugar de RBENV
no me deja instalar el framework de ohmyzsh , ejecuto el comando que me dicen en la clase pero me sale este error, que debo hacer? gracias.
curl: (22) the request URL returnet error :404 not found
Hola Juan Camilo, no estoy seguro a qué URL te refieres, pero acabo de revisar esta URL y está funcional, debería poder acceder al raw del archivo publicado en github, por otro lado, si aún revisando la URL (especialmente typos) podrías revisar la doc oficial en la página aquí
Excelente, cada comando se ejcutó como debia, cabe destacar que uso VSCode asi que la parte de atom la saltaré por ahora.
¡A seguir aprendiendo!
He seguido todos los pasos de instalacion al pie de la letra, iba muy bien hasta que llegue a ejecutar atom, este me genera un error que he buscado como solucionarlo y hasta el momento no he podido con el. si alguien me puede dar una luz se lo agradeceria.
el error es el siguiente:
➜ platzi atom .
expr: syntax error: missing argument after ‘8’
➜ platzi /usr/bin/atom: line 195: 21672 Segmentation fault nohup "$ATOM_PATH" --executed-from="$(pwd)" --pid=$$ "$@" > "$ATOM_HOME/nohup.out" 2>&1
Buenas tardes, tengo problema en la instalaciòn de esta parte: