actualizar-proyectos-a-laravel-5-1

Así que estás trabajando en un proyecto con Laravel 5.0 y justamente hoy te enteras de que hay una nueva versión de Laravel… La primera pregunta que te hiciste fue: ¿Debo actualizar? Absolutamente sí.

Laravel 5.1 tiene una gran ventaja con respecto a su versión anterior, esta nueva versión 5.1 es LTS, quiere decir que tendrá 2 años de arreglo de bugs y 3 años de arreglo de problemas de seguridad, esto es una ventaja inmensa si estás haciendo proyectos a nivel corporativo, donde la estabilidad prima sobre la novedad.

Por otro lado, Laravel 5.1 no rompe la compatibilidad con la versión anterior 5.0, por supuesto que hay cambios pero es muy sencillo actualizar como te explicaremos en este post.

Para actualizar un proyecto a Laravel 5.1 necesitamos un proyecto en la versión 5.0… ¿Qué les parece si utilizamos el proyecto de mi curso de Laravel 5 desde cero? Aquí tienen el repositorio en GitHub.

Clonar un proyecto con Laravel 5.0

Nota: puedes omitir esta sección si ya tienes éste u otro proyecto en Laravel 5.0 funcionando en tu servidor local.

repositorio-github-curso-de-laravel

Paso 1: clonar o descargar el proyecto

Muy bien, lo primero que haremos será dirigirnos a nuestra carpeta de proyectos (Projects/ Code/ httpdocs/ o la que estés usando), desde allí puedes clonar el proyecto con git o descargar los archivos y descomprimirlos en tu carpeta de proyectos.

Puedes clonar con el siguiente comando dentro de tu carpeta de proyectos en la consola:

git clone [email protected]:sileence/curso-laravel-5.git curso-laravel

Con ello se descargará el proyecto dentro del directorio curso-laravel/

Paso 2: configurar el archivo .env

En tu editor favorito, copia el archivo .env.example que está en la carpeta principal del proyecto y pégalo con el nombre .env, en el nuevo archivo .env vas a cambiar los datos de conexión a tu base de datos.

Paso 3: instalar las dependencias con Composer

Una vez hecho eso dirígete a la carpeta del proyecto cd curso-laravel y ejecuta composer install, para instalar las dependencias del proyecto.

Paso 4: genera la llave de la aplicación:

Por medidas de seguridad, esto no se te puede olvidar:

php artisan key:generate

Es posible que tu proyecto ya tenga una llave generada, en dado caso deberías usarla y no crear otra nueva, pero acá estoy comenzando de cero así que generaré una.

Paso 5: base de datos

Crea una base de datos (asegúrate de que el nombre coincida con lo que hayas puesto en la llave DB_DATABASE del archivo .env y luego ejecuta el siguiente comando:

php artisan migrate –seed

Paso 6: crea un virtual host

Ahora necesitas crear un virtual host para tu proyecto, por ejemplo yo llamaré al mío http://curso.laravel, tú puedes crear el que quieras, si necesitas ayuda revisa nuestra sección sobre configuración de entornos.

No olvides que tu virtual host debe apuntar a la carpeta public/ de tu proyecto

Finalmente con esto, ¡Ya tenemos nuestro curso básico de Laravel 5.0 listo para ser actualizado!

Por ejemplo si entras aquí: http://curso.laravel/admin/users serás llevado de vuelta al login, si inicias sesión con [email protected] y la clave «secret» podrás ver el listado de usuarios que creamos en el curso de Laravel 5 desde cero:

lista-usuarios-curso-de-laravel

Actualizar el proyecto de Laravel 5.0 a 5.1

Paso 1: actualiza tu composer.json

Muy bien, quizás lo primero que se te ocurra es escribir composer update en la consola y con eso tu proyecto se va a actualizar a Laravel 5.1 ¿No? ¡No! Composer maneja dependencias y versiones, entonces primero debemos indicar que queremos trabajar con Laravel 5.1 y no con 5.0 para ello nos vamos al archivo composer.json  y desde allí vamos a cambiar la dependencia de Laravel 5.0 a Laravel 5.1, el bloque resultante quedará así, y lo demás queda igual:

    "require": {
        "laravel/framework": "5.1.*",
        "laravelcollective/html": "5.1.*"
    },

Fíjate que con este cambio le indicamos a Composer que ahora nuestro proyecto va a funcionar con cualquier subversión de Laravel 5.1 (el asterisco al final es un comodín), quiere decir que nuestro proyecto podría ser actualizado a Laravel 5.1.2 o Laravel 5.1.7 pero nunca a Laravel 5.2.

Generalmente estas subversiones (la última de Laravel  fue 5.0.16) ofrecen correcciones de seguridad y bugs, nada que vaya a romper tu proyecto.

Muy bien, grabamos los cambios al composer.json

Paso 2: actualiza el archivo bootstrap/autoload.php

Tomado de la documentación oficial de Laravel:

Actualiza la variable $compiledPath  en el archivo bootstrap/autoload.php a lo siguiente:

$compiledPath = __DIR__.’/cache/compiled.php’;

Paso 3: crea el directorio bootstrap/cache

Dentro de la carpeta bootstrap/ vas a crear una carpeta llamada cache, allí coloca un archivo .gitignore con el siguiente contenido:

*
!.gitignore

Esta carpeta debería tener permisos de escritura, y contendrá archivos temporales de optimización como compiled.php, routes.php, config.php y services.json.

Paso 4: ejecuta composer update

Ahora sí, vamos a ejecutar composer update  en la consola

Por supuesto no olvides hacerlo desde la carpeta de tu proyecto, en mi caso es ~/Projects/curso-laravel/

¡Y listo! Tu proyecto en Laravel 5.0 es oficialmente un proyecto en Laravel 5.1, por ejemplo en la portada del curso básico de Laravel, si recargas varias veces, verás que Taylor Otwell agregó un par de citas «nuevas» en la super cargada y nada minimalista página inicial de Laravel:

laravel 5 pantalla inicial

Paso 5: cambia el sistema de autenticación

En la versión 5.1 de Laravel ha sido removida la clase App\Services\Registrar que teníamos en Laravel 5.0, por ello, deberás incluir los métodos validator() y create() directamente en el controlador de autenticación. Solo basta con copiar y pegar el siguiente código dentro de AuthController.php, ubicado en app\Http\Controllers\Auth. Ningún otro cambio debería ser necesario en estos métodos.

/**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|max:255',
            'email' => 'required|email|max:255|unique:users',
            'password' => 'required|confirmed|min:6',
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return User
     */
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }

Si tu proyecto es muy complejo y has sobrescrito métodos como create dentro del modelo de Eloquent, es posible que debas hacer cambios extras, puedes ver toda la guía oficial para actualizar tu proyecto a 5.1 (en inglés).

¿Cómo puedo aprender Laravel?

Nuestro equipo trabaja incansablemente en publicar todo el material posible sobre Laravel, estos tutoriales justo el día del lanzamiento de Laravel 5.1 son un ejemplo ¿Quieres ayudarnos a mantener esta comunidad? Puedes formar parte con una donación o inscribiéndote a nuestros planes, y acceder así a nuestros cursos que te enseñarán paso a paso cómo desarrollar aplicaciones con Laravel.

Material relacionado:

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Como instalar Laravel 5.1 Lección siguiente Primeros pasos con Laravel 5.1