Configurar el entorno de trabajo con haini.sh
Usamos Git para gestionar los cambios y haini.sh para tener un entorno de desarrollo reproducible.
Llamamos "hain" al entorno que haini.sh reproduce.
Configurar 0xacab
Hay que agregar llaves SSH al perfil de 0xacab.org para poder trabajar con repositorios.
cd # asegurarnos que estamos en home ~
ls .ssh/
# si no dice nada o solo dice known_hosts, necesitamos crear una llave
ssh-keygen -t ed25519
cat .ssh/id_ed25519.pub # copiar lo que sale de acá
Ir a https://0xacab.org/-/profile/keys, pegar la llave ahí y guardar.
Entorno de trabajo
Cosas generales que podemos ir incorporando/preparando:
-
Vamos a usar mucha terminal, elijamos una que nos resulte cómoda de leer. Por lo general fondos oscuros cansan menos la vista, muchas distribuciones configuran sus terminales con transparencia, se puede cambiar en sus opciones. También una tipografía con alto que nos resulte cómodo ayuda un montón.
-
Prompt: La información que muestra la terminal a la izquierda de donde podemos escribir comandos se llama "prompt". Por defecto suele mostrar el directorio actual. Es importante prestarle atención porque es un indicador de dónde estamos parades.
En los ejemplos no lo ponemos porque cada prompt puede ser diferente, uno con información mínima y útil podría ser:
echo 'export PS1="\$(git rev-parse --abbrev-ref HEAD) \W >_ "' >> ~/.bashrc source ~/.bashrc # Cambia el prompt a: rama_de_git nombre_del_directorio >_ a partir de acá podemos escribir # Por ejemplo: rails sutty >_ make serve
Tené en cuenta que esta prompt no va a estar en la terminal dentro de hain.
-
Editor de texto. El que queramos, con resaltado de sintaxis, indentación (sangría!) automática y un esquema de colores que nos resulte cómodo.
# La variable de entorno EDITOR contiene nuestro editor por defecto, si la queremos cambiar, agregamos al final de estos archivos, son `>>`, cuidado!! `>` pisa todo el contenido (a quién se le ocurren estas cosas.) echo 'export EDITOR=vim' >> ~/.bashrc # Cambiar vim por lo que corresponda echo 'export EDITOR=vim' >> ~/.bash_profile # Hace falta reiniciar la terminal o hacer esto para que tome efecto inmediato source ~/.bashrc
Tené en cuenta que esta prompt no va a estar en la terminal dentro de hain.
-
Herramientas: Instalar y configurar git y git-lfs, make y task/go-task.
# Crear el archivo ~/Project/Sutty/.gitconfig con la configuración específica para Sutty [user] name = NOMBRE email = MAIL@sutty.nl # Crear o editar ~/.gitconfig con la configuración general [init] defaultBranch = main [core] quotepath = off [color] ui = true [push] default = simple [pull] default = simple rebase = false [merge] tool = vimdiff [mergetool] keepBackup = false [rebase] autosquash = true [filter "lfs"] process = git-lfs filter-process required = true clean = git-lfs clean -- %f smudge = git-lfs smudge -- %f [includeIf "gitdir:~/Projects/Sutty"] path = ~/Project/Sutty/.gitconfig
-
Paciencia :P
-
A veces da fiaca pero para practicarlo podemos tomar notas colectivas en pads que nos vayan quedando como documentación para ir emprolijando.
-
Directorio de trabajo. Para no tener los proyectos flotando por todos lados, podemos tener un directorio/carpeta de trabajo para Sutty donde coloquemos todos los proyectos, por ejemplo:
# Asegurarnos que estamos en nuestro directorio de origen ("home")
cd ~
# Crear el directorio de trabajo
mkdir -p Projects/Sutty
A partir de este momento, todos los comandos que corramos en esta guía a menos que se indique lo contrario implican que se abrió la terminal y se cambió la posición a este directorio, con:
cd Projects/Sutty
Puede ser el nombre que queramos pero todo tendría que estar dentro de un directorio para que no lo perdamos y no tengamos que recordar donde estaba cada cosa cuando la queramos ir a buscar.
Nota: los próximos comandos son ejemplos y no van a funcionar ya que no tenemos los repositorios clonados todavía.
Para poder trabajar con comodidad y no estar pensando dónde estamos parades en cada comando (o correrlos donde no corresponda y obtener errores inesperados que nos hagan perder el tiempo buscándolos), la recomendación es trabajar siempre desde el directorio de origen/raíz de cada proyecto. Si vamos a trabajar en sutty, lo primero que hacemos es:
cd ~/Projects/Sutty/sutty
Y a partir de ese momento no volvemos a usar
cd
para movernos a otro lado. Si queremos abrir un archivo, en lugar de movernos al directorio y después abrirlo, podemos usar su ubicación relativa a la raíz:
vim app/controllers/post_controller.rb
Al cerrar el editor estaremos en el mismo directorio.
Si queremos movernos rápido, podemos hacer:
cd app/controllers/
...
cd -
El
-
en
cd
indica el directorio anterior, podemos ir y venir entre uno y otro rápidamente así.
Usando ubicaciones relativas podemos abrir archivos de otros proyectos también:
vim ../sutty-base-jekyll-theme/_layouts/default.html
Haini.sh
Tuvimos muchos problemas instalando dependencias de Sutty en las computadoras de cada desarrolladorx, entonces creamos esta herramienta para simplificarlo.
Para bajarla:
# Clonar el repositorio dentro de Sutty
cd ~/Projects/Sutty
# Es importante que sea ahí! Los otros repositorios asumen que está en `../haini.sh`
git clone git@0xacab.org:sutty/haini.sh.git
Los distintos repositorios van a usar haini.sh automáticamente, y la primera vez que lo uses se va a generar el entorno automáticamente.
Para ello, tendrás que correr por una vez el comando haini.sh desde el repositorio.
# Ir al repositorio
cd ~/Projects/Sutty/haini.sh
./haini.sh
Esto dejará lista la configuración y bajará los certificados que tendrás que importar a continuación desde tu navegador amigo.
Importar certificados
Por más que haini.sh importa los certificados que genera al sistema ya sea dentro y afuera de haini.sh, Firefox y Chrome no toman los certificados del sistema y usan su propia lista. Hay que importarlos manualmente, así es en Firefox:
-
Ir a about:preferences#privacy y apretar en "Ver certificados..."
-
Ir a la pestaña de "Autoridades" y apretar en "Importar..."
-
Seleccionar el certificado en
Sutty/hain/usr/local/share/ca-certificates/ca-sutty.crt
Sutty
Estas instrucciones son específicas para el desarrollo del panel Sutty y no para otros componentes.
Base de datos
Al principio usábamos bases de datos SQLite3, pero ahora necesitamos características específicas de PosgreSQL (como el buscador). El servidor de PG corre dentro de Hain, con lo que no tenemos que hacer nada más.
Configuración inicial
Solo hay que hacerla una vez!
cd ~/Projects/Sutty
# Clonar el repositorio de git de Sutty
git clone git@0xacab.org:sutty/sutty.git
# Esto crea el directorio/carpeta sutty/ desde donde vamos a trabajar a partir de ahora. Ya no es necesario clonar pero sí estar dentro de este directorio para trabajar.
cd sutty
# O directamente al iniciar la terminal
cd ~/Projects/Sutty/sutty
# Configuramos las variables de entorno. El archivo .env no se comitea (está ignorado por git), porque sino nos estaríamos intercambiando configuraciones específicas de cada quién.
cp .env.example .env
$EDITOR .env # Editar el archivo con nuestro editor preferido
# Muchas de estas variables de entorno tienen valores por defecto y no hace falta adaptarlas:
SUTTY=sutty.local # el dominio principal de sutty, esta ubicación es propia de nuestra computadora y no puede visitarse desde afuera, está bien para trabajar individualmente
SUTTY_WITH_PORT=sutty.local:3000 # Si cambiamos SUTTY hay que cambiar esta variable también
TIENDA=tienda.sutty.local # Idem
# Generamos los secretos
make rails args="credentials:edit"
# Este paso va a abrir un editor, sobre el que vamos a agregar estas líneas, guardar y salir:
secret_key_base: un texto largo que rails ya genera por nosotres
devise_pepper: puede ser el mismo que secret_key_base
lockbox_master_key: tiene que ser de 64 caracteres hexadecimales, por ejemplo con `openssl rand -hex 32`
airbrake: misma longitud que secret_key_base
# Al guardar y salir, se genera un archivo config/credentials.yml.enc y config/master.key, no son los usados en produccion y no es necesario agregarlos a git.
# Iniciar la base de datos
make postgresql
# Configuramos la base de datos. Este paso genera la base de datos y le sube los datos iniciales. Para más datos sobre la base de datos, la configuración está en config/database.yml
make rake args="db:prepare"
# Si se queja que faltan migraciones, correrlas con
make rake args="db:migrate"
# Llenar la base de datos con una semilla. Concretamente, esto crea pseudo-sitios necesarios para el funcionamiento correcto del panel.
make rake args="db:seed"
Iniciar el entorno de trabajo
Para poder desarrollar Sutty y hacer pruebas en vivo, iniciamos el servidor de desarrollo:
make serve
# Se puede cerrar con control+C, también conocido como ^C
A partir de ahí podemos abrirlo en el navegador de trabajo con la dirección https://panel.sutty.local:3000/
Cuando hagamos cambios en los archivos, Rails los detecta y recarga la información. Con esto podemos desarrollar haciendo pruebas en vivo.
Tienda

Sign in · GitLab
0xacab
Es necesario crear una base de datos
tienda
con usuarix
tienda
sin contraseña, antes del paso
bundle exec rake db:setup
.