Histórico de marzo de 2010
Tarde o temprano la mayoría de personas que integramos sistemas de búsqueda en nuestros desarrollos web acabamos usando Sphinx debido a la cantidad de opciones que nos ofrece.
Sirva esta entrada a modo de guía rápida sobre cómo instalar Sphinx en nuestros Macs.
Paso 0: Requisitos previos
Antes de seguir, es básico que tengamos instalado XCode, para lo cual o bien lo hacemos desde nuestro DVD de instalación de Leopard o bien nos vamos al Mac Dev Center de la Apple Developer Connection y nos lo bajamos.
Todo lo que vamos a escribir lo haremos en un terminal. Mi recomendación es usar iTerm, aunque hay gente que está más habituada a utilizar la propia applicación Consola. A vuestra propia elección.
Comienza la diversión ;)
Paso 1: Descarga de Sphinx
Si no existiese, crearemos una carpeta src desde la que funcionaremos a lo largo de todo este tutorial:
mkdir ~/src
cd ~/src
A continuación procedemos a la descarga y desempaquetado de Sphinx 0.9.9:
curl -O http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz
tar xfz sphinx-0.9.9.tar.gz
cd sphinx-0.9.9/
Ya estamos listos para compilar.
Paso 2: Compilación e instalación
Si queremos compilar Sphinx a 32 bits (la configuración por defecto) utilizaremos el siguiente comando como paso previo:
./configure --prefix=/usr/local
Si deseamos hacerlo a 64 bits (lo más habitual si estamos en Snow Leopard) tendremos que hacerlo de la siguiente manera:
LDFLAGS="-arch x86_64" ./configure --prefix=/usr/local
Ya estamos listos para compilar:
make
Y por último, instalar:
sudo make install
Con esto ya tenemos Sphinx 0.9.9 perfectamente operativo en nuestro sistema. Si te dedicas al desarrollo con Ruby on Rails echa un vistazo a Thinking Sphinx, una gema de lo más recomendable.
¡A disfrutar!
Dentro de los objetivos en uno de nuestros desarrollos en Rails está el tener cuantas más vías mejor a la hora de personalizar la aplicación de cara al cliente. En una de esas últimas incursiones en la carga dinámica para cada cliente estuvimos jugando con el tema de que pudieran tener helpers propios.
Imaginemos que dentro de config/preinitializer.rb tenemos algo como esto:
NUESTRO_CLIENTE = 'foobar'
Podemos crear un fichero llamado config/initializers/helper_loader.rb (el nombre es un poco lo de menos), que contenga lo siguiente:
helper_load_path = File.join(RAILS_ROOT, 'app', 'customizations', NUESTRO_CLIENTE, 'helpers')
ActiveSupport::Dependencies.load_paths << helper_load_path
Por último, creamos un fichero llamado app/customizations/foobar/helpers/foobar_helper.rb parecido al siguiente:
module FoobarHelper
def nuestro_metodo
# lo que sea
end
end
Ya solo nos quedaría meter en nuestro app/controllers/application_controller.rb la siguiente línea:
helper Module.const_get("#{NUESTRO_CLIENTE.titleize}Helper")
Con esto ya tendríamos disponible el helper nuestro_metodo solo en aquellas instancias en las que NUESTRO_CLIENTE fuese foobar y no en el resto. O también nos podría servir para poder definir en varias instancias de manera completamente distinta nuestro_metodo (por ejemplo, definir un ad_tag_helper que para un cliente estuviese optimizada para SmartAdServer, para otro con OpenX, para otro con Google Adsense…).
Las posibilidades que nos brinda estas pocas líneas son infinitas :)