Farmapo (pet-project)

Estas últimas semanas he ocupado parte de mi escaso tiempo libre en desarrollar Farmapo.

Farmapo es una app para iOS con la que podrás consultar las farmacias de la provincia de Pontevedra más cercanas a la posición en la que te encuentres, con todas sus guardias del día actual y otros datos de interés (teléfono, email, etc).

Todos los desarrollos en los que había trabajado con iOS habían sido para terceros, la publicación siempre quedaba de mano de estos. Mi principal objetivo personal con Farmapo no era otro que conocer todo el proceso de publicación de una app, tener un conocimiento más global de todo el entorno, y seguir aprendiendo tanto con rails como con iOS.

Los datos de Farmapo los obtenemos del cofpo.org, así que tampoco podemos garantizar que estos sean completamente fiables, son los que ellos ofrecen. Y no, no hay ws ni nada parecido.

Además, he vuelto a trabajar con Ángeles y Adolfo, de a2laboratoriodeideas.com, ya hacía mucho que no compartíamos proyecto y era una gran oportunidad que queríamos aprovechar. Ellos se han encargado de todo el diseño tanto de la app como de la landing ¿a que ha quedado chula?. ¡Gracias!.

¿Y ahora que?, pues bueno, como proyecto personal su recorrido y expectativas son mínimas, si a alguien le resulta de utilidad ya las habremos superado con creces.

¿Y que más?, pues nada, podemos seguir aprendiendo, y como no hay mejor forma de aprender que acompañado, ya he liado a Micho para desarrollar mano a mano la versión android. Eso sí, sin exigencias, que es un pet-project, bueno no, un pet-project-colaborativo :D .

screenshot farmaposcreenshot farmaposcreenshot farmapo
6 Comments

Retrospectiva 2012

Veo a mi alrededor y como no, he de decir que 2012 ha sido un buen año para mi, aún sin haber cumplido la mayoría de los objetivos que me había propuesto, ha sido un buen año.

Mucho trabajo y nuevos proyectos han ido cambiando el rumbo que tenía previsto y embarcándome en una dinámica de la que solo he podido salir al final, pero hemos salido y queremos nuevos retos:

  • He cerrado 3 proyectos de ecommerce, 2 de ellos con un nivel de exigencia enorme y de los que he aprendido muchísimo: knitbrary.com/store, purificaciongarcia.com, a-tomica.com.
  • He liberado un sencillo plugin para magento, Jsa_storelocation, con el que gestionar y mostrar puntos de venta físicos en un mapa de google. Más allá de su sencillez me ha servido para ir adentrádome poco a poco en la compleja arquitectura magento y para hacer las cosas bien en esta plataforma.
  • He continuado con el mantenimiento y desarrollo de nuevas funcionalidades de 2 importantes proyectos en php, secretos :( .
  • Hemos desarrollado nuevas funcionalidades y mejoras varias en mitwiz.com, aunque absolutamente insuficientes, este es uno de mis grandes debes de 2012.
  • He comenzado a colaborar con adianteapps tanto en la app servidor como en los clientes iOS.
  • Conforme ha avanzado el año he recibido cada vez más propuestas de colaboración en proyectos interesantes, pero también con cada vez menos o ningún recurso, y alguna que otra ida de olla. Supongo que la situación actual es propicia para esto.
  • He conocido a más gente interesante que ningún otro año, y he empezado a asistir a algún evento con regularidad.
  • A un nivel más personal he suspendido en casi todo lo que me proponía: hacer más deporte, organizar mejor mi tiempo, mejorar mi nivel de inglés, escribir más en este blog.

Algunas de las cosas que me gustaría conseguir este 2013:

  • Adentrarme mucho más en el mundo móvil. Esta última semana del año he estado de semivacaciones y he avanzado en un petproject que pronto podré publicar.
  • Debería ser el año de mitwiz móvil.
  • Me gustaría empezar a hacer algo sencillo para android, conocer mínimamente la plataforma.
  • Reescribir y reenfocar comoestaelpanorama.com, lo tengo entre ceja y ceja desde hace tiempo.
  • Tomarme todas las vacaciones que no he podido este año.
  • Empezar clases de inglés intensivas.
  • Todavía por planificar pero es muy posible que una pequeña estancia fuera de España, creo que @isacostas me dará el empujón definitivo.
  • Y en todo lo que tengo pendiente aunque suene a topicazo de año nuevo: más deporte (+btt pls), más tiempo para hacer las cosas que más me gustan, más enseñar y vender mejor mi trabajo (también escribir aquí claro).

Pues eso, seguro que este año nos esperan retos la mar de interesantes :) , ¡a por el!

2 Comments

Panel de estadísticas (analytics api, gattica, google charts)

Estoy colaborando en un proyecto en el que necesitamos mostrar las estadísticas de las app’s móviles de nuestros clientes. Claro que usamos google analytics, pero para hacerle la consulta más sencilla a nuestros usuarios hemos decidido añadir un panel de estadísticas al mismo gestor que usan para configurar su app.

La plataforma en servidor es rails con la colección de gemas correspondientes.

Para integrarnos con analytics usaremos gattica, muy sencillota.

Para mostrar estos datos en sus respectivos gráficos usaremos google charts.

Todo muy facilito, aunque en ocasiones sea necesario manejar mínimamente los datos que devuelve analytics para mostrarlos en charts.

Pero, algo que sí me ha llamado la atención por ser ambas herramientas de google (charts y analytics):

  • Cuando pides datos por país (país es una dimensión) a analytics, este devuelve sus nombres de país.
  • Cuando filtras datos por país (país es un filter) a analytics, este necesita como filtro el nombre del país.
  • Pero para el gráfico GeoChart de regiones de un país, charts necesita que ese filtro país sea el código ISO del país.
  • Para llegar al nivel de región desde el nivel de país atendemos al evento regionClick, el cual como parámetros solo recibe el código ISO del país, por lo que no tendremos el nombre para decirle a analytics que nos devuelva las estadísticas para este país.

Al final damos un pequeño rodeo, y además del evento “regionClick” habitual, usamos el evento “select” que se activará cada vez que pulsemos en un país del mapa, un poco de código para intentar clarificar el asunto:

# Primero se ejecuta este evento del que obtenemos el código ISO del país seleccionado
google.visualization.events.addListener(geochart, 'regionClick', (e) ->
  isoCountrySelect = e.region
)

# A continuación se ejecuta este otro evento desde el que obtenemos el nombre del país seleccionado
google.visualization.events.addListener(geochart, 'select', (e)->
  console.log(e)
  selection = geochart.getSelection()
    if selection.length == 1
      selectedRow = selection[0].row
      selectedCountry = data.getValue(selectedRow, 0)
      # Llamamos a drawRegionsMap para dibujar el mapa de regiones con las estadísticas
      drawRegionsMap(selectedCountry, isoCountrySelect)
)

drawRegionsMap = (country, countryIso) ->
  # Añadimos el nombre de país al campo del formulario que pedirá los datos de analytics al servidor
  $('#country').val(country);
  # Creamos la tabla que almacena los datos para charts
  data = new google.visualization.DataTable()
  data.addColumn('string', 'City')
  data.addColumn('number', 'Access')

  options =
    region: countryIso
    displayMode: 'markers'

  geochart = new google.visualization.GeoChart(document.getElementById('geochart'))

  $.ajax
    async: true
    type: 'GET'
    url: $('#form_filter_stats').data('stats_for_regions_action')+'.json'
    data: $('#form_filter_stats').serialize()
    success: (r) ->
      for stat in r
        data.addRow([stat.city, stat.visits])

      geochart.draw(data, options)

Y aquí parte del resultado, aunque no podais toquetear :) :

stats

Leave a comment

Compartir mysql con dropbox

Hace bastante tiempo que además de tener mis proyectos versionados en bitbucket, muchos de ellos están sincronizados con dropbox. Esto me permite trabajar en cualquiera de los 2 equipos que utilizo habitualmente.
Pero desde que trabajo de esta forma tengo la necesidad de compartir bbdd, mysql en la mayoría de los casos. La solución hasta este momento ha sido la típica con mysqldump e import, completamente inoperativa. Desde entonces busco la mejor forma de sincronizar las bbdd’s entre los 2 equipos, solo entre esos 2 equipos, solo en desarrollo.

Servidor externo mysql

Aunque es una opción, intento mantener la infraestructura de desarrollo mínima (por esto utilizo bitbucket y dropbox). Un servidor en mi red local no es viable, muchas veces necesito trabajar fuera de la oficina, y abrir puertos tampoco me lo planteo. Un servidor fuera de mi red local sería demasiado lento para desarrollo.

Automatizar export/import de .sql

Otra de las opciones que se me pasaron por la cabeza, desarrollar una serie de scripts que automáticamente exportaran bbdd’s a .sql cada X tiempo/evento y se almacenaran en dropbox, otros scripts detectarían que los .sql fueron modificados y los importarían. Parece demasiado jaleo todo, y sobre todo demasiado tiempo perdido :S.

Almacenar ficheros nativos de determinadas bbdd mysql en dropbox

Apuntando con un enlace simbolico. Por ejemplo:

ln -s /opt/local/var/db/mysql5/dbtest /dropbox/var/mysql/dbtest

Esto funcionaría perfecto para el motor MyISAM ya que todos los datos que usa cada bbdd se almacenan en esos ficheros MYD, MYI, frm. Pero con innodb no es tan sencillo. En mysql hay bastante información sobre este motor:

  • Lo primero sería utilizar el parámetro innodb_file_per_table en my.cnf para que innodb genere un .idb con la estructura de cada tabla en lugar de almacenarlo todo en el fichero ibdata1.
  • Configurar el parámetro innodb_data_home_dir para que almacene el fichero ibdata1 en dropbox y este sea compartido por ambos servidores mysql.
  • Configurar el parámetro innodb_log_group_home_dir para que almacene los ficheros de log de innodb en mysql y también sean compartidos.

Con esto, y apuntando las bbdd’s que necesitemos sincronizar a dropbox, en principio sería suficiente. Pero dentro del jaleo que supone todo esto y los posibles problemas que puede traer, hay uno que me ha llevado a tomar otra decisión. Y es que yo creo links simbólicos para apuntar solo ciertas bbdd’s que necesito sincronizar, no todas, pero ibdata1 y los logs siguen almacenando información de cada bbdd que utilice el motor innodb dentro del servidor mysql. Y puedo tener otras bbdd’s diferentes entre ambos servidores y que no necesito compartir, creo que produciría un autentico caos y no tardaría en corromper el espacio de tablas.

2 configuraciones independientes de mysql, una en local otra en dropbox

Así que finalmente esta es mi solución ya en modo pruebas desde hace una semana: 2 configuraciones diferentes, que yo uso con 2 ficheros my.cnf diferentes, los cuales renombro cada vez que necesito cambiar de entorno:

  • my.cnf.local: Con esta configuración mis bbdd’s se almacenan en local (no están sincronizadas), todo igual que hasta ahora.
  • my.cnf.dropbox: En esta otra configuración lo que hago es cambiar la variable datadir para almacenar todos los ficheros que genera mysql en dropbox y por lo tanto sí que están permanentemente sincronizadas.

La pega de compartir el datadir entre 2 servidores mysql es que solo uno de ellos puede estar iniciado a la vez, pero en definitiva, esto es el antipatrón servidor. Si resulta ser operativo, seguiremos puliendo.

6 Comments

Resumen 2011 y objetivos para 2012

Este es el primer año que hago este ejercicio. Vista atrás y adelante para salir de la voragine diaria, coger algo de perspectiva y marcarse nuevos retos. Quizás en otro post comente más a fondo mis experiencias en el primer año de freelance.

Repaso general a este 2011:

  • Ha sido el año de mi salida de zara.com y el comienzo aventurero como freelance. Y sigo, así no ha ido mal del todo.
  • Mi primer proyecto más o menos serio con iOS para adianteventures. Es un gustazo aprender de otros en nuevos proyectos.
  • Mitwiz sale de beta privada y publicamos (y seguimos publicando) una saca de nuevas mejoras.
  • Bastantes contactos con potenciales clientes. Creo que he conseguido identificar los proyectos marronazo total, ahora me falta identificar los proyectos molones :) . Ningún problema con clientes, aunque muchas tomas de contacto que no fructifican. Creo que he tenido demasiada cautela, pero sigamos así.
  • Participamos en abredatos con comoestaelpanorama.com, quedamos en 4º posición y la experiencia no ha podido ser mejor, pena no haber podido asistir a Madrid a la entrega de premios.
  • Desastre total en cuanto a deporte: ni gym ni he conseguido realizar ningún otro deporte con mínima regularidad.

Y ahora lo bueno, objetivos para el 2012:

  • Comenzar a vender mitwiz. Sin duda una prioridad, y mucho trabajo por delante.
  • Continuar mejorando mis hábitos como freelance: horarios, paseos/distracciones, automatizar tareas rutinarias, y en general aprovechar mejor mi tiempo, trabajar menos vaya.
  • Continuar descubriendo rails. Conseguir mínimo 2 nuevos proyectos en rails, 1 está al caer, me falta otro así que ya sabeis ;) .
  • Conseguir de una vez hacer TDD o algo que se le parezca. Al menos conseguir crear buenos tests y datos de prueba.
  • Cerrar con éxito mis 2 primeros proyectos de ecommerce como freelance, sin duda el reto para los próximos 6 meses.
  • Escribir más en este blog. Cada vez escribo menos y es que cada vez tengo menos tiempo.
  • Volver a participar en ¿abredatos 2012?.
  • Ser más activo en alguna de las comunidades que me interesan: rails, agilismo, opendata, ios.
  • Mejorar mi inglés, esta ya va tocando :( .
  • Volver a hacer deporte, gym y algún otro deporte con regularidad, btt seguro :) .

Creo que estoy siendo demasiado optimista pero si no lo soy ahora ¿cuando?.

Leave a comment

Mitwiz abre sus puertas

Ya todos los usuarios registrados os habéis enterado a través del mail que enviamos hace unos cuantos días. Y muchos otros a través de las redes, el boca a boca, y nuestra insistencia personal a los mas allegados (esperamos que sin llegar a la pesadez :) ) para que probéis y nos reporteis sensaciones. Y eso, que solo me faltaba a mi, desde este mi humilde blog, decir eso de:

A estas alturas no os voy a contar que es mitwiz. Para esto podeis echarle un vistazo al blog y al propio mitwiz, debería quedar bastante clara la cosa, sino es así tenemos un problema no planteado hasta el momento ¡ponte en contacto por favor!.

De nuevo, esto no ha hecho mas que empezar. El camino por recorrer sigue siendo infinito, nos mantendremos firmes, creemos en el proyecto. Nos esperan un montón de nuevas funcionalidades, otros soportes, +integración con herramientas externas, mejoras en usabilidad, contenido, aspecto … y … alguna que otra sorpresa ya mismo ¡estad atentos!.

Nosotros seguimos actualizando semana a semana mejorandolo todo, y además mientras, nos divertimos de lo lindo :) .

Leave a comment

Probando geoplugin.net desde ruby

Ayer en un rato libre y tonto, estuve trasteando con ruby y el servicio de geolocalización por ip http://www.geoplugin.net. A la petición http://www.geoplugin.net/php.gp?ip=91.61.81.221 tenemos una respuesta del tipo:

a:14:{s:14:"geoplugin_city";s:8:"Chemnitz";s:16:"geoplugin_region";s:6:"Saxony";s:18:"geoplugin_areaCode";s:1:"0";s:17:"geoplugin_dmaCode";s:1:"0";s:21:"geoplugin_countryCode";s:2:"DE";s:21:"geoplugin_countryName";s:7:"Germany";s:23:"geoplugin_continentCode";s:2:"EU";s:18:"geoplugin_latitude";s:15:"50.833301544189";s:19:"geoplugin_longitude";s:15:"12.916700363159";s:20:"geoplugin_regionCode";s:2:"13";s:20:"geoplugin_regionName";s:6:"Saxony";s:22:"geoplugin_currencyCode";s:3:"EUR";s:24:"geoplugin_currencySymbol";s:7:"€";s:27:"geoplugin_currencyConverter";d:0.68893261679999995283907310295035131275653839111328125;}

Un objeto serializado al modo php. Depués de probar la gema json y otros medios de serialización/deserialización de objetos ruby sin éxito, me encuentro con la gema php-serialize que hace justo lo que necesito.

      require 'php_serialize'
      geo_request = Net::HTTP.get_response(URI.parse("http://www.geoplugin.net/php.gp?ip="+request.remote_ip)).body
      geo_request=PHP.unserialize(ip)
      puts geo_request['geoplugin_latitude']
      puts geo_request['geoplugin_longitude']

Seguro que existen otras formas más eficientes de hacer lo mismo, pero por el momento me ha servido.

Leave a comment

Eliminando un commit local en mercurial

Desde hace un tiempo estoy usando bitbucket.org para mis proyectos, ¡y bien contento que estoy!. Ayer gracias a un commit en falso encontré este fantástico manual hg. Eliminar un commit de mercurial es tan sencillo como:

hg strip revision_a_eliminar

Pero para ejecutar este comando necesitamos activar la extension mq de mercurial. En mi caso, osx, solo he necesitado añadir al fichero .hgrc:

[extensions]
mq=
2 Comments

Participamos en el abredatos 2011, !¿Como está el panorama?¡

Este fin de semana hemos participado en abredatos 2011 con ¡¿comoestaelpanorama?¡.

Mis compañero-cracks de aventura, Paula, Javi, Damián, con los que en su momento tuve el gustazo de trabajar/estudiar, pero con los que hacía mucho mucho tiempo que no colaboraba. Ha sido tooodo un placer volver a compartir code, proyecto y grata experiencia con ellos.

Abredatos:

Abredatos es un concurso (este año es la segunda edición), organizado por Pro Bono Público, para darle un poco de bombo al movimiento opendata en España. Intentar que la sociedad sepa que es y porqué se necesita el opendata, y que a la administración pública le llegue un poquito de ruído, y poco a poco (así es como funcionan estas cosas) estas ideas vayan calando. El concurso consiste en el desarrollo de una aplicación en nada menos que 48h!, y que consulte al menos una fuente de datos pública. Al finalizar el concurso (el domingo a las 00:00), todo proyecto debía tener un repositorio público con los fuentes, y su proyecto accesible para todo el mundo.

Nuestra participación:

Una primera toma de contacto allá por el 3 de abril, y un par de semanas después estabamos los 4 personajes comprometidos para participar (somos el equipo 62!), Javi y Paula desde Londres, Damián desde Vigo, y aquí un servidor desde Gondomar (vamos a ponerlo en el mapa).

Las siguientes fueron unas semanas de reflexiones e idas de olla sobre que podíamos hacer, que queriamos hacer, y si podíamos hacerlo (es realmente difícil con los datos disponibles hoy en día). La idea del empleo siempre estuvo presente por la importancia que tiene ahora, pero no conseguiamos encontrar nada realizable en 48h, nos faltaban muuchos datos (ya, por eso existe el concurso y para eso participamos, para que cambie el panorama).

Además de la idea del empleo surgieron otras: apps para geolocalizar información variada, y siempre por la zona de Vigo-Pontevedra (farmacias, bibliotecas, ptos wifi, buses,…), apps que ofreciera de una forma mas accesible contrataciones/licitaciones de la Xunta de Galicia, e incluso surgió la idea de un juego en el que elegir un par de congresistas, muy curioso pues finalmente el equipo 48 desarrollo un proyecto muy parecido, ¡y con un resultado fantástico!.

Técnicamente:

Después de plantear rails (sabeis que siento devoción por este entorno), Damián y yo llegamos a la conclusión de que ninguno tenía la experiencia suficiente como para llevar a cabo un desarrollo tan intenso, y enfrentarnos con éxito veloz a esos problemas que siempre acabas encontrando (sabemos como funciona esto, ley murphy etc etc). Así que nos decidimos por php y en este caso codeigniter, no somos los+cool pero ha cumplido a la perfección :P . Además usamos jquery, google maps api, php-excell-reader, google web fonts, google charts, google geocode.

Las fuentes que usamos para el proyecto han sido: estadísticas de empleo de redtrabaja, estadísticas de población del ine, y la api de opcionempleo.

Para versionar usamos git, alojando el código en github, podeís consultar los fuentes aqui.

El desarrollo:

El desarrollo durante el fin de semana tuvo varias fases de optimismo/pesimismo desmedido, en este sentido ya es complicado encontrar el equilibrio en un proyecto internet, ¡cuanto mas en un proyecto internet de 48h!, y cuanto mas en un proyecto internet de 48h y cada cual en un lugar diferente.

Durante el fin de semana, como no, el parseo de datos fué lo que mas complicó todo el desarrollo. Hasta el sabado de madrugada no teníamos todavía datos reales, y las funcionalidades implementadas trabajaban contra datos de pruebas, ¡muuucha incertidumbre!. Con el primer parseo serio teníamos datos incongruentes, en España había mas de 8M de parados, la cosa está mal pero no para tanto :) . Estabamos sumando las ultimas filas de los xls con el sumatorio, lo cual duplicaba todos los datos, ¡llegamos a pensar que habíamos interpretado mal la fuente de datos!, todo se vivía de una forma muy intensa y eran las casi las 5 de la mañana después de dormir 4h escasas la madrugada del viernes. Finalmente detectamos el error y el domingo por la mañana realizamos otro parseo con éxito.

Una vez datos parseados, teníamos ccaa/provincias/municipios y datos estadísticos asociados, nos quedaba un problema por solucionar, geolocalizar cada uno de los 8113 municipios de nuestra bbdd. La opción mas sencilla era google y su servicio geocode, pero a las 600-1000 peticiones eramos baneados. Los vecinos, un par de modems 3g y en el entorno de producción nuestras soluciones, así poco a poco fuímos geolocalizando de 1000 en 1000 +-.

Las últimas horas del domingo fueron para algunos detalles, necesitamos pantalla “sobre el proyecto“, estadísticas en portada, ¿de donde quitamos los datos?, etc. Finalmente esto es lo que ha dado de sí, sabemos que tiene cosas por pulir pero amiguetes, han sido 48h.

La experiencia:

La experiencia ha sido muy enriquecedora. Volver a trabajar con mis compis, saber que puedes dar de ti en tan poco tiempo, como organizar o mejor dicho desorganizar un proyecto así en tan poco tiempo, ver a cada momento como avanzaban los demás equipos, tomar tantas decisiones y en tan poco tiempo para poder llegar a tener algo, y la repercusión final.

Como apunte y que defiendo desde hace ya tiempo, comentar que el teletrabajo funciona y muy bien (he aquí la prueba), pero a mi no me convence, por lo que la próxima vez que participe en algo así intentaré, al menos con la parte más técnica, hacerlo de forma presencial, se pasa mucho mejor :) y se transmite mas conocimiento.

Para rematar, felicitar desde este mi humilde espacio a todos los equipos que han participado, en serio, las trabas para desarrollarlos son enormes, y los proyectos son de una calidad excelente.

Leave a comment

ruby1.9 y rails3 con rvm y passenger

Comentaba que uno de los caminos por los que me gustaría seguir es rails (ya veremos si lo consigo compaginar), así que en mi servidor de proyectos necesito servir rails además php.

Quiero usar rails 3 y ruby 1.9 (de empezar, con lo último), parece que versiones demasiado nuevas para las últimas estables de la mayoría de distribuciones linux. Así que después de investigar un poco me encuentro con rvm (ruby version manager, de este ya me había hablado @tothemario, un gestor de instalaciones ruby) y passenger (un proyecto para servir rails a través de apache o nginx).

A través de este artículo conseguí instalar rvm, no sin antes resolver varias dependencias:

sudo apt-get install zlib1g zlib1g-dev zlibc build-essential

Como nota mental, recordar añadir la siguiente linea al final del fichero .bashrc

[[ -s "/home/user/.rvm/scripts/rvm" ]] && source "/home/user/.rvm/scripts/rvm"  # This loads RVM into a shell session.

Y ya podemos instalar la versión de ruby que necesitemos con rvm install “version” y cambiar de versión con rvm use “version”, realmente sencillo.

Rvm y las versiones de ruby instaladas se encuentran en $HOME/.rvm en caso de instalarse como usuario o en /usr/local/rvm en caso de una instalación con root.

A continuación toca la instalación de passenger:

gem install passenger
passenger-install-apache2-module

passenger-install-apache2-module nos guiará durante la instalación, nos pedirá que instalemos determinadas dependencias que no cumplimos, de todas las que propone la que nos puede dar problemas es: apt-get install libopenssl-ruby.

Como hemos instalado ruby a través de rvm, este no se entera del soporte openssl que passenger propone instalar mediante apt, así que instalamos openssl con rvm, y reinstalamos la versión de ruby necesaria:

rvm package install openssl
rvm remove 1.9.2
rvm install 1.9.2 -C --with-openssl-dir=$HOME/.rvm/usr

Tras añadir las lineas respectivas a apache2.conf, ya tenemos rails3 funcionando en apache:

LoadModule passenger_module $HOME/.rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/ext/apache2/mod_passenger.so
PassengerRoot $HOME/.rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5
PassengerRuby $HOME/.rvm/wrappers/ruby-1.9.2-p180/ruby

Finalmente intenté descargarme un proyecto privado desde github via http, para probar el entorno, pero la versión de git que tenía instalada (1.5) parece que da problemas con esta autenticación, así que buscando información actualizamos a la 1.7:

Añadimos el fuente de los backports al sources.list

deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free

Y actualizamos la versión de git a la 1.7

apt-get update
apt-get -t lenny-backports install git

Fuentes:

http://www.fangiotophia.com/journal/2010/8/31/random-act-of-stupidity-6-debian-rails-3-setup-guide.html
http://beginrescueend.com/packages/openssl/
http://rvm.beginrescueend.com/
http://serverfault.com/questions/157383/why-does-the-debian-lenny-git-package-not-install-git
http://www.modrails.com/documentation/Users%20guide%20Apache.html

Leave a comment