Blog de programación, errores, soluciones

Cómo hacer laravel homestead automático

Bueno me encontre mucho tiempo buscando como hacer laravel homestead automático (ver laravel homstead) ya que cuando deja de funcionar la virtual machine y por mas que uses  vagrant up --provision esta no funciona realmente es frustrante.

En ese caso lo que deberíamos hacer es correr vagrant destroy --force y volver a crear la virtual machine denuevo con vagrant up ya que nuestro homestead ya esta instalado no tenemos que hacer los pasos para volverlo a instalar.

¿Ahora dira y esto que tiene de malo?

Bueno la parte mala de esto es que tendremos que correr denuevo comandos para crear el usuario que conecta a la base de datos garantizar el acceso de este correr denuevo php artisan migrate y correr denuevo php artisan db:seed para poblar la base de datos para tener datos en los que trabajar.

Ademas de esto talves tengamos que habilitar algún modulo de lo que sea que estemos corriendo.

¿como podemos hacer esto en laravel sin tener que entrar a la consola y cada vez que nos pase esto hacerlo una y otra vez?

Bueno laravel tiene un archivo el cual se llama after.sh este archivo se corre la primera vez que se crea la virtual machine. Aquí es donde podemos hacer que al instalar nuestra virtual machine corra estos comandos.

como usar el archivo after.sh

El archivo after.sh tiene algunas indicaciones de como usarlo pero no tiene ningun ejemplo, asi que puede  pensar en usarlo como un shell de vagrant, esto no funcionara.

la forma correcta de usar este archivo es escribiendo los comandos que queremos que se ejecuten en nuestra consola.

Para que tenga una idea de como usarlo entre a su vagrant antes de modificar este archivo con vagrant ssh.Escriba echo "hola mundo"esto nos escribirá en consola hola mundo

simple no, ni tanto. La verdad es que para usar el archivo tiene que hacer que todo se ejecute desde consola sin entrar a los programas.

A continuación daré un ejemplo de lo que funciona y lo que no.

ejemplo de algo que no funciona ejemplo usted puede estar tentado en hacer lo siguiente,
en nuestro archivo after.sh escribir (el código siguiente no funcionara estamos entrando a mysql)

mysql
CREATE DATABASE mibase;
CREATE USER 'miusuario'@'localhost' IDENTIFIED BY 'mipassword';
GRANT ALL PRIVILEGES ON mibase.* TO 'miusuario'@'localhost';
exit
cd code
php artisan migrate
php artisan db:seed

Para hacer que funcione lo que escribimos anteriormente tenemos que hacer lo siguiente:

borrar la entrada a mysql y el exit. Agregar las siguientes lineas de código donde estaban estas.

mysql -e "CREATE DATABASE mibase"
mysql -e "CREATE USER 'miusuario'@'localhost' IDENTIFIED BY 'mipassword'"
mysql -e "GRANT ALL PRIVILEGES ON mibase.* TO 'miusuario'@'localhost'"
cd code
php artisan migrate
php artisan db:seed

Si no sabe instalar homestead puedes echarle un vistazo aqui

Ayudame: Por favor deja un comentario antes de irte, tu opinión es bienvenida. Si te gusta el contenido comparte.