Platzi
Platzi

Suscr铆bete a Expert y aprende de tecnolog铆a al mejor precio anual.

Antes: $249
$209
Currency
Antes: $249
Ahorras: $40
COMIENZA AHORA
Termina en: 1D : 13H : 51M : 34S

Instalaci贸n de Ruby, RoR en Linux4/36

Lectura

Instalaci贸n Entorno de Desarrollo

Objetivo

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)

(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 鈥渟udo鈥, de otra forma no debes usarlo as铆 como tampoco sus variaciones como 鈥$ sudo su鈥

El programa 鈥渟udo鈥 pronunciado 鈥淪UDU鈥 /su藧du藧/ es normalmente interpretado como 鈥渟uperuser 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 鈥渟udo鈥 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:

Reading package lists... Done

Ahora vamos a instalar las librerias necesarias usando sudo y el comando apt install

$ sudo apt install build-essential curl wget openssl libssl-dev libreadline-dev dirmngr zlib1g-dev libmagickwand-dev imagemagick-6.q16 libffi-dev libpq-dev cmake libwebp-dev

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

$ git config --global user.name "Johan Tique"

$ git config --global user.email johan@platzi.com

$ git config --global color.ui true

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

$ git config --global http.proxy http://proxy.alu.uma.es:3128

$ git config --global https.proxy https://proxy.alu.uma.es:3128

Rockeando con tu consola de comandos

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 [蓹蕣 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:

plugins=(git bundler colorize brew zeus gem rails ruby npm node history-substring-search zsh-syntax-highlighting)

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

  
export LANGUAGE=en_US.UTF-8

  
export LC_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

  
export LANGUAGE=es_CO.UTF-8

  
export LC_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

鉃 ~ chmod -R go-w ~/.oh-my-zsh

鉃 ~ rm -f ~/.zcompdump*; compinit

Instalando RBENV

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

鉃 ~ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash

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...

Checking for `rbenv' in PATH: not found

You seem to have rbenv installed in `/home/platzi/.rbenv/bin', but that

directory is not present in PATH. 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:

鉃 ~ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc

鉃 ~ echo 'eval "$(rbenv init -)"' >> .zshrc

鉃 ~ source ~/.zshrc

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.

鉃 ~ gem install bundler

鉃 ~ bundle config github.https true

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.

鉃 ~ curl -fsSL https://raw.githubusercontent.com/nodenv/nodenv-installer/master/bin/nodenv-installer | bash

鉃 ~ echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.zshrc

鉃 ~ echo 'eval "$(nodenv init -)"' >> ~/.zshrc

鉃 ~ source ~/.zshrc

鉃 ~ nodenv install 12.17.0

鉃 ~ nodenv global 12.17.0

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

#=> Rails 6.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

鉃 ~ sudo curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -

鉃 ~ sudo sh -c "echo 'deb https://dl.yarnpkg.com/debian/ stable main' >> /etc/apt/sources.list"

鉃 ~ sudo apt update

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

鉃 ~ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

鉃 ~ echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list

鉃 ~ sudo apt update

Una vez actualizado la lista de paquetes de postgreSQL usaremos el siguiente comando para instalarlo

鉃 ~ sudo apt -y install postgresql-12 postgresql-client-12

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 [email protected]:~$ para su ejecuci贸n):

鉃 ~ sudo -i -u postgres

[email protected]:~$ createuser --pwprompt --interactive platzi
  

#=> Enter password for new role: ****** (platzi)

#=> Enter it again: ******

#=> Shall the new role be a superuser? (y/n) n

#=> Shall the new role be allowed to create databases? y

#=> Shall the new role be allowed to create more new roles? (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

鉃 ~ wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add -

鉃 ~ sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list'

鉃 ~ sudo apt-get update

鉃 ~ sudo apt-get install atom

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:

atom-beautify, file-icons, git-blame, ident-guide-improved, language-haml, minimap, pigments, sass, save-workspace, selection-highlight, todo-show.

BONUS atajos de teclado y comandos

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 ** # ingresar a un directorio

$ ls # ver el contenido del directorio

$ cp ** ** # 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 +  # 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

Aportes 18

Preguntas 3

Ordenar por: