La presente aplicación tiene dos objetos: Dominio y CfgDominio. A cada dominio le corresponde un cfg_dominio. Veamos como se trabaja algo así en Phoenix
Esta vez, usaremos más características de las que vimos en nuestra introducción, por lo que esta vez si usaremos una base de datos.
Primero, levantamos un contenedor con una base de datos para nuestro proyecto. El proyecto se llamará DemoForm, así que la base de datos en Phoenix, por defecto, se llamara demo_form_dev. Aprovecharemos eso para facilitarnos la configuración en general:
Este minúsculo proyecto esta hecho para ir copiando manualmente, y entender así cada detalle en los comentarios. Son dos archivos, así que se me hace justo
Creación del proyecto
Para facilitar las cosas, vamos a iniciar un proyecto sin ecto, por el momento una base de datos no es realmente necesaria
mix phx.new demo --no-ecto
Ya puestos a remover del proyecto elementos que por ahora no son necesarios, dejemosle sin internacionalización o envío de correo:
Gracias a los post anteriores, nvim ahora tiene mayores funcionalidades presentes.
Esta parte va sobre algunas herramientas que, como snacks, pueden ser una mejora significativa a cosas que ya se podían hacer, o que como noise, practicamente tranforman a nvim en otra cosa.
Herramientas
snacks
He llegado a snacks después de haber usado fzf-lua y aerial por un tiempo, estando complacido de sus capacidades. Pero decidí probar snacks, con quién no solo tengo las funcionalidades que usaba de estos plugins, sino que incluso algunas más.
Empieza el punto vertebral para una configuración de este tipo. Cuesta creer lo importante que es el resaltado de sintaxis hasta que se trabaja sin ella.
Y, aprovechando que tenemos configurado AST, usaremos un LSP pora cada lenguaje, así además tendremos una revisión temprana del código. NeoVim casi como un IDE
Luasnip
Es un dependencia de blink-cmp que definiremos en su propio archivo:
-- ~/.config/nvim/lua/plugins/luasnip.luareturn {
"L3MON4D3/LuaSnip",
-- follow latest release. version ="v2.*", -- Replace <CurrentMajor> by the latest released major (first number of latest release)-- install jsregexp (optional!). build ="make install_jsregexp"}
Treesitter
Se recomienda instalar el ejecutable de tree-sitter en el sistema, en el caso que vaya a usarse :TSInstallFromGrammar