Solución: Un core de CakePHP para unirlas a todas (las aplicaciones)

Ya tengo en mi disco duro alrededor de 10 proyectos de cakephp, algunos son viejos y usan CakePHP 1.1, pero para los más nuevos uso la versión 1.2 (aclaro que no me ha ido mal. Para aquellos que aún dudan cual versión usar, tengo entendido que está apunto de entrar en fase beta. Especialmente viendo [...]

Ya tengo en mi disco duro alrededor de 10 proyectos de cakephp, algunos son viejos y usan CakePHP 1.1, pero para los más nuevos uso la versión 1.2 (aclaro que no me ha ido mal. Para aquellos que aún dudan cual versión usar, tengo entendido que está apunto de entrar en fase beta. Especialmente viendo el Roadmap de CakePHP1.2.)

En fin, luego de la promoción del framework, quiero comentarles cómo hago para evitar tener el core de cake repetido para cada aplicación que tengo. Creé un directorio en el cual descargo la última versión directamente desde el svn de cake: https://trac.cakephp.org/.

Ese es el core que deben usar todas las aplicaciones que correne en mi pc. Para ello tengo tengo 2:

Opción1: modificar las rutas dentro de la aplicación

En el archivo app/webroot/index.php es necesario modificar la línea 56 que dice:

[php]
define(’CAKE_CORE_INCLUDE_PATH’, ROOT);
[/php]

Y decirle a la aplicación dónde está el core de cake (por ejemplo, si ROOT es /home/aikon/sitios y el core de cake está en /home/aikon/sitios/cake1.2.x) entonces esa línea será:

[php]
define(’CAKE_CORE_INCLUDE_PATH’, ROOT . DS . ‘cake1.2.x’ . DS);
[/php]

Así el gran beneficio es que obviamente nuestra aplicación sabrá dónde está el core y no tendrás que duplicarlo. Si estás usando la suite de pruebas de CakePHP vas a tener que hacer algo parecido en el archivo app/webroot/tests.php

El problema de esta solución es que al cambiar las rutas, tendrás algunos problemas cuando trabajan varias personas en el proyecto (con ponerse de acuerdo en la ubicación del core bastará). Pero, si desean mantener las rutas que propone cake por defecto entonces sigue leyendo :)

Opción 2: enlaces simbólicos

La segunda opción, que acabo de descubrir hace poco, es usar enlaces simbólicos (suaves, creo) en el sistema de archivos. Digamos que, nuevamente la carpeta de nuestra aplicación es /home/aikon/sitios/miapp/app (esta es la carpeta app que trae cake adentro por defecto) y el core de cake (descargado por svn) lo tenemos en /home/aikon/cake1.2

Lo que debemos hacer para que todo funcione de maravilla es lo siguiente:

[code]
cd /home/aikon/sitios/miapp
ln -s /home/aikon/cake1.2/* .
[/code]

¡Eureka! El gran beneficio de esto es que no es necesario modificar archivo alguno (lo cual ayuda a disminuir la cantidad de problemas al momento de trabajar en grupos). No lo he comprobado, pero seguramente esta solución requiere que apache este configurado para segur SymLinks.

De cualquier forma, es importante recordar que el manual de CakePHP recomienda mantener el core de cake fuera del DocumentRoot cuando se va a poner en producción el sitio. Lo cual se puede lograr de distintas formas y cualquiera de estas dos puede servir.

Recibe otros artículos como este automáticamente
Suscríbete vía RSS a aikon.com.ve || ¿Qué es RSS?

Tags: , ,

Deja tu respuesta

requerido

requerido

Nota: mantente dentro del tema y se respetuoso.