Soldat's log

Simplemente otro blog personal

Archivo para la categoría "Mac OS X"

PHP, PEAR y PHPUnit para Yii en Mac OS X Lion

con 9 comentarios

He tenido que montar un entorno de desarrollo para Yii, un framework de PHP, en mi Mac OS X Lion. Como he tenido que hacer varios apaños he recopilado todos los ajustes en esta entrada.

Antes de nada enumero las versiones del software utilizadas:

  • Mac OS X 10.7.2
  • PHP 5.3.6
  • PEAR 1.9.4
  • PHPUnit 3.5.15
  • Selenium Server 2.8.0
  • Yii 1.1.8
  • Firefox 7.0.1

La mayoría de las acciones que comento han de realizarse con permisos de administrador.

Activar el servidor web con PHP

Mac OS X Lion incluye Apache con soporte para PHP. Sin embargo es necesario activarlo. Para ello en /etc/apache2/httpd.conf descomentamos:

LoadModule php5_module libexec/apache2/libphp5.so

Y en /etc copiamos el fichero de configuración de fábrica:

# cp /etc/php.ini.default /etc/php.ini

Nota: personalmente prefiero que mis entornos de desarrollo y pruebas sean lo más privados posibles. Por ello modifico el Listen de /etc/apache2/httpd.conf a

Listen 127.0.0.1:80

Solamente resta activar el servidor web desde System Preferences / Sharing / Web Sharing.

El directorio que se publica como página principal está ubicado en /Library/WebServer/Documents/ podemos utilizar directamente esta carpeta o bien utilizar carpetas personales ( http://localhost/~usuario/ ). La opción de carpetas personales busca el directorio Sites en el home del usuario, que se puede crear a partir del cuadro de configuración anterior.

Para probar que todo está funcionando lo más recomendable es publicar un fichero .php con un getinfo():

<?php
phpinfo();
?>

Instalar PEAR y PHPUnit

En las versiones anteriores de Mac OS X PEAR está directamente instalado, en Lion es necesario hacer un paso previo:

# php /usr/lib/php/install-pear-nozlib.phar 

Con esto ya tenemos PEAR instalado. Actualizamos:

# pear upgrade-all

configuramos el autodiscover (para hacernos las cosas más fáciles) e instalamos PHPUnit:

# pear config-set auto_discover 1
# pear install pear.phpunit.de/PHPUnit

Solamente nos falta un detalle más, añadir el software instalado por PEAR a la configuración de PHP. Añadimos al /etc/php.ini:

include_path = "/usr/lib/php/pear/"

Para comprobar que todo va bien comprobamos la versión de PHPUnit

# phpunit --version

Montar y ejecutar las pruebas de un proyecto Yii

A partir de aquí lidiaremos con los problemas que surgen con Yii. Primero nos descargamos Yii y creamos un proyecto de prueba:

$ yii/framework/yiic webapp demo

Problema con date.timezone

Al acceder a la demo puede que nos muestre un mensaje de error como el siguiente:

It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function.

La solución más sencilla es configurar en /etc/php.ini el timezone, por ejemplo:

date.timezone = "Europe/Madrid"

Problema con Selenium, arrancar Firefox

Configuramos la URL para las pruebas en el fichero protected/tests/WebTestCase.php:

define('TEST_BASE_URL','http://localhost/~chernando/demo/index-test.php/');

Descargamos Selenium y lo dejamos ejecutando:

$ java -jar selenium-server-standalone-2.8.0.jar

e intentamos lanzar las pruebas funcionales del proyecto yii:

$ cd demo/protected/tests/
$ phpunit functional/SiteTest.php

Lo más probable es que falle el lanzamiento de iexplorer (bastante razonable en Mac OS X ;) ) o que no encuentre firefox-bin ya que no está en el path. Para solucionarlos editamos protected/tests/phpunit.xml, eliminamos:

<browser name="Internet Explorer" browser="*iexplore" />

y modificamos la entrada del Firefox a nuestro, en mi caso es el siguiente:

<browser name="Firefox" browser="*firefox /Users/chernando/Applications/Firefox.app/Contents/MacOS/firefox-bin" />

Con esto podremos ejecutar las pruebas funcionales.

Problema con Selenium, fallan los test

Después de llegar hasta aquí me sorprendió bastante que de los tres tests que vienen de fábrica fallaran dos ;) Concretamente estos dos fallos:

Body cannot be blank.
Failed asserting that <boolean:false> is true.

Password cannot be blank.
Failed asserting that <boolean:false> is true.

Por suerte es un problema conocido y ya está corregido en el repositorio.

El problema es que no se espera a que se ejecuten las validaciones con JavaScript. El parche publicado corrige un par de líneas en el fichero protected/tests/functional/SiteTest.php que cambia los dos assert que fallan por waitFor, consiguiendo el comportamiento esperado.

Escrito por chernando

2011/10/16 a 17:22

Escrito en Desarrollo Software, Mac OS X

Etiquetado con , , ,

Homebrew, gestión de paquetes en Mac OS X

dejar un comentario »

Homebrew es un sistema de gestión de paquetes de software para Mac OS X como podría ser un apt en sistemas GNU/Linux pero sin distribución de paquetes precompilados.

Gestión de paquetes en Mac OS X

Apple propone el App Store como sistema para obtener software y mantenerlo actualizado. Evidentemente solo las aplicaciones publicadas en el Apple Store pueden ser mantenidas de esta manera. Y aún así la oferta es bastante limitada si nos fijamos en software Unix.

Otras opciones disponibles son MacPorts o Fink. Todos ellas tienen un planteamiento parecido y diferente al mismo tiempo. MacPorts y Fink plantean mantener todo el software a parte de la base de Mac OS X mientras que Homebrew prefiere utilizar al máximo la base propuesta por el sistema y construir únicamente lo que falte.

Este planteamiento tiene sus ventajas y sus inconvenientes:

  • Al necesitar menos dependencias externas es más rápido.
  • Al utilizar las dependencias del sistema las cosas se pueden romper cuando el sistema las actualice.

Por otro lado MacPorts y Fink, aunque más laboriosos tienen un entorno más controlado y por tanto más estable.

En resumen, depende de las necesidades de cada uno. En este artículo veremos el uso de habitual de Homebrew que probablemente sea el más ligero para empezar a probar.

Requisitos

Necesitamos el entorno de compilación de Mac OS X. Aunque algunas utilidades vienen ya instaladas de fábrica en el sistema, es recomendable (y en algunos casos indispensable) instalar Xcode. Lo podemos encontrar en el App Store.

Instalación de Homebrew

Desde la web oficial podemos acceder a la guía de instalación. En la práctica se reduce a ejecutar (a fecha de este artículo):

/usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"

La instalación se realiza en /usr/local por lo que o bien lo ejecutamos como administrador o bien nos damos de permisos para escribir en ese directorio.

Actualizar el listado de fórmulas

Homebrew utiliza el concepto de fórmula. Este concepto transmite la idea de cómo se obtiene un programa, es decir, sus dependencias y sus pasos de compilación.

El listado de fórmulas se mantiene en los repositorios de GitHub. Esto nos permite crear forks del proyecto, añadir nuestras fórmulas y demás. Veamos cómo se actualiza el listado:

$ brew update
remote: Counting objects: 141, done.
remote: Compressing objects: 100% (63/63), done.
remote: Total 122 (delta 93), reused 88 (delta 59)
Receiving objects: 100% (122/122), 13.71 KiB, done.
Resolving deltas: 100% (93/93), completed with 18 local objects.
From http://github.com/mxcl/homebrew
   f34cda7..09ad71b  master     -> origin/master
Updated Homebrew from f34cda74 to 09ad71bd.
[...]

Es la salida típica de git. A partir de ahí veremos un resumen de las nuevas fórmulas añadidas y de las actualizadas.

Buscar fórmulas

brew search PATRÓN

Mostrar información de una fórmula

Tenemos la opción clásica:

brew info FÓRMULA

y la curiosa opción de visitar la página del proyecto:

brew home FÓRMULA

Instalación de fórmulas

brew install FÓRMULA

Listar fórmulas antiguas

En el proceso de actualización del listado de fórmulas se detectarán nuevas versiones de fórmulas ya instaladas:

brew outdated

Actualización de paquetes

Tenemos dos opciones

brew upgrade

que actualiza todos las fórmulas con nuevas versiones o

brew upgrade FÓRMULA

que actualiza únicamente la fórmula especificada.

Eliminación de versiones antiguas

Una curiosidad de Homebrew es que no desinstala versiones anticuadas para ello usamos:

brew cleanup

Crear nuevas fórmulas

Es bastante sencillo crear una fórmula nueva. Aunque el Formula Cookbook es bastante claro, veremos brevemente los paso principales:

  1. brew create URL (con la URL de la descarga)
  2. Editar el fichero, creado automáticamente, en /usr/local/Library/Formula/FÓRMULA.rb
  1. Añadir las dependencias con depends_on.
  2. Añadir los comandos system necesarios para la compilación
  • Probar la fórmula con brew install -vd FÓRMULA

Más información

Escrito por chernando

2011/09/22 a 15:15

Escrito en *NIX, Mac OS X

Etiquetado con , , ,

Aplicaciones Mac OS X recomendables

dejar un comentario »

Hace unos cuantos años compré un Mac Mini con idea de sustituir el ordenador de sobremesa de mi casa. Posiblemente una de las mejores inversiones en hardware que he hecho :) Así que he decidido exprimir un poco más la plataforma y empezar a utilizarlo como un equipo de trabajo. A continuación os detallo las aplicaciones que me han recomendado y que he ido encontrando por el camino.

  • MacPorts, una implementación del clásico ports de BSD. Permite acceder a un repositorio muy amplio de software libre a golpe de compilador.
  • MacTeX, entorno completo de LaTeX.
  • iTerm, sustituta de la terminal de Mac OS X. Especial mención a la colocación inteligente (las nuevas terminales no se pisan) y al seleccionar un texto se copia automáticamente.
  • Adium, cliente de mensajería instantánea. Completo, práctico y muy personalizable.
  • Dropbox, solución de copia, sincronización y compartición de ficheros. En realidad es multiplataforma pero es bastante conocida entre los maqueros.
  • AppCleaner, limpiador de aplicaciones. Inevitable si probamos nuevos programas; se encarga de buscar y eliminar ficheros de configuración.
  • AddressBookSync, obtiene información desde Facebook para completar tu agenda personal. Una pequeña utilidad para poner “caras” a tus contactos.
  • Transmission, cliente de BitTorrent ligero y con acceso web.
  • ted, descarga tus series favoritas.
  • Caffeine, evita que el Mac entre en reposo.

A partir de MacPorts podéis obtener el software que se echa de menos del mundo GNU/Linux. Utilidades para el desarrollo: maven, git, Grails… de redes: nmap, Wireshark… hasta casi los 7000 paquetes disponibles.

Por último, conviene recordar el juego de aplicaciones que es bueno tener cerca: OpenOffice, Firefox, GIMP, Inkscape, FileZilla, MPlayer, Picard, Eclipse

Se agradecen recomendaciones :)

Escrito por chernando

2010/05/25 a 22:51

Escrito en Mac OS X

Seguir

Get every new post delivered to your Inbox.