Trabe ya no escribe aquí. Puedes encontrarnos en nuestra publicación en Medium: medium.com/trabe.

4Trabes Historias de una empresa en 100 metros cuadrados

El blog de Trabe Soluciones

El infierno de los valores cableados

|

A veces me pregunto como es posible que hoy en día la gente siga cableando valores en su código.

Último ejemplo que me he encontrado: acts_as_sphinx. Este simpático plugin permite de manera muy sencilla que nuestros modelos active record lancen búsquedas contra un sphinx. Es sencillo, funciona y se adapta muy bien a lo que buscamos para una aplicación que estamos desarrollando y por eso lo usamos. Sin embargo, no es perfecto. Y lo que me “cablea” es que la caguen en algo tan trivial. Digamos que este plugin nos “obliga” a que el fichero de configuración de sphinx sea $RAILS_ROOT/config/sphinx.conf (mala idea porque no se puede usar “de serie” una configuración diferente para producción y desarrollo, aunque esa ya es otra historia).

El código maligno se encuentra en acts_as_sphinx_tasks.rake:

1
2
3
4
5
desc "Start searchd server"
  task :start do
    if File.exists?('/var/run/searchd.pid')
      puts 'Sphinx searchd server is already started.'
      ...  y así varias veces más ...

Ahora el fichero de configuración de ejemplo/documentación de sphinx:

1
2
3
4
5
6
7
searchd {
    ...
    # a file which will contain seachd process ID
    # used for different external automation scripts
    # MUST be present
    pid_file = @CONFDIR@/log/seachd.pid 
    ...

Me parece muy bien que a los autores del plugin les guste que el fichero de pid esté en /var/run/searchd.pid, pero yo no lo coloco ahí. ¿Era tan difícil, ya que sabes dónde localizar el fichero de configuración, extraer de él el nombre del fichero con el pid? Yo creo que no. Puede hacerse en 5 líneas. Menos incluso. Y menudo cambio.

Y alguién dirá que no pasa nada, que redefina las tareas rake o que modifique el plugin. Y yo diré que bien, que de acuerdo, pero que, como plugin que es, debería ofrecer una funcionalidad mínima y correcta, sin que me obligue a hacer nada a mayores (porque para eso es el código de terceros, para no tener que hacerlo uno mismo). No pretendo cambiar el funcionamiento del plugin. Sólo que haga lo que dice que hace correctamente.

Dejo en la recamara un ejemplo de cableo salvaje de valores en una libreŕia bastante conocida. Un día me animo y cuento la historia. Que no tiene desperdicio.

Lo sentimos, pero los comentarios están cerrados