lunes, enero 30, 2012

Mock de web requests fácil

Hoy me surgió la necesidad de mockear el acceso web de una clase que realiza cierto scrapper (utilizo Nokogiri y open de la sig. manera;

doc = Nokogiri::HTML(open(URL))

Luego de buscar un poco e intentar sin éxito con la gema fakeweb encontré webmock que sí me anduvo.


Agrego la gema al Gemfile:

group :test do
  gem 'webmock'
end


Luego, en el setup de la clase a testear, configuro la url que voy a acceder con el resultado que deseo que traiga:


  def setup
    mock_file = Rails.root.join("test", "fixtures", "some_saved_website.html")

    stub_request(:get, /http:\/\/www.some_web.com\/*/).
      with(:headers => {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
      to_return(:status => 200, :body => File.new(mock_file), :headers => {})
  end

Funciona muy bien. Hace mock de todos los requests y si falla algún otro acceso te escribe el código necesario para mockear el mismo:

  1) Error:
test_scrap_some_real_data(TestBlaBlaScrapper):
WebMock::NetConnectNotAllowedError: Real HTTP connections are disabled. Unregistered request: GET http://www.xxx.com/yyyy?o=2 with headers {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}

You can stub this request with the following snippet:

stub_request(:get, "http://www.xxx.com/Internet/yyyy?o=2").
  with(:headers => {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
  to_return(:status => 200, :body => "", :headers => {})

martes, noviembre 22, 2011

Vagrant en Windows o "como seguir unir dos mundos incongruentes"

Situación:
Nuestros diseñadores gráficos necesitan trabajar en el diseño de una aplicación que esta desarrollada en Ruby on Rails. Ellas utilizan los típicos programas de Adobe en la plataforma Windows.
Lo ideal es que ellos trabajen en los archivos de recursos y vean directamente los cambios reflejados con sólo recargar el navegador. 
El problema es que Windows es aún un poco hostil con RoR como para usarlo diariamente como entorno de desarrollo.

Una posible solución es la siguiente:

Correr la aplicación Rails en una máquina virtual con Ubuntu y trabajar con los fuentes a través de un directorio compartido entre el sistema anfitrión y el huesped.

Para esto voy a utilizar una herramienta llamada Vagrant, que es un front-end de VirtualBox.

Básicamente hay que instalar un par de programas, correr un par de comandos en una CMD (o línea de comandos) y editar un archivo de configuración.

Los pasos para instalar son (cuando vean líneas que comienzan con el carácter ">" es que deben ejecutarse en una CMD) :
  • Bajar e instalar JRuby (parece que en Windows 64bits Vagrant no anda con Ruby MRI). Si no tienes la Java RE, podes bajar la versión con la JRE incluida. También vamos a instalar un par de librerías que luego se van a necesitar.
> jgem install jruby-openssl jruby-win32ole
  • Bajar e instalar Virtual-Box
  • Instalar git. Nuestro proyecto utiliza este fantástico manejador de versiones para los fuentes.
  • Instalar Vagrant con el comando:
> jgem install vagrant

  • Descargar una imagen de Ubuntu Lucid 32bit y agregarla a las imágenes de Vagrant:
> vagrant box add base http://files.vagrantup.com/lucid32.box 
  • Descargamos los fuentes del proyecto
 > git clone {una_url_git_project.git}
  •  Agregamos Vagrant al proyecto:
> cd project_dir 
> vagrant init
  • Editar el archivo Vagrantfile que se acabó de crear. Nuestra aplicación utiliza el puerto HTTP 3000; si queremos acceder a la aplicación desde Windows, hay que hacer un "forwarding" por lo que agregamos esta línea:
config.vm.forward_port "http", 3000, 3000
  • Levantar la VM:
> vagrant up


Ya tenemos una VM con Linux corriendo. Para ingresar a la máquina virtual normalmente se usa SSH, pero en Windows el comando "vagrant ssh" no funciona.

Se puede solucionar utilizando un programa SSH como el putty. Mas detalles aquí. Dentro de la VM, nuestro proyecto quedo instalado en el directorio /vagrant. Ahí podemos ir e instalar gemas, correr bundler, levantar la aplicación, etc.

Ya con la VM funcionando los archivos del proyecto que editemos en Windows se van a ver reflejados en el directorio /vagrant del sistema huésped.

Espero que le sirva a alguien esta burda explicación. Vagrant es mucho mas que lo mostrado. No soy un adepto de usar máquinas virtuales, pero hay que admitir que es una valiosísima herramienta que nos puede servir en muchos escenarios.

sábado, junio 06, 2009

CouchDB: Perform like a pr0n star

Una muy buena presentación de CouchDB, una base de datos distribuida muy escalable

viernes, abril 10, 2009

Miguel 2009, 10km

El domingo a 29 de marzo a las 9:00hs se corrió la maratón de Miguel 2009 en homenaje a Miguel Sánchez organizada por el gobierno de la ciudad de Buenos Aires.
El lugar fue en Palermo, Buenos Aires, el mismo del año pasado. La distancia era de 10km y mi tiempo fue de 45 minutos, 2 segs aproximadamente.
Como el año pasado se notó un poco de mala organización como pasa con las carreras gratuitas.
Las remeras de la carrera eran gratuitas, blancas y de algodón.
La gente abusó de esto y se llevo varias x persona. Yo me llevé 2 y me sentía mal hasta que me compré un helado y me contó el heladero que él tenía 3 :D

lunes, agosto 04, 2008

Reebok 10km 2008

Estuvo frío, pero muy buena!

Pos gral: 647
Tiempo: 00:46:05.8
Pos categ (MASCULINO 19 A 34 ANOS): 283

lunes, junio 30, 2008

Resultados Klenex 7KM

POS. N° TIEMPO PROM.X KM
213 941 30:55 04:25

link

sábado, febrero 23, 2008

Otro gato!

Hace un par de meses que está con nosotros otra gatita mas. Nadia le dice nene, pero lo bautizamos Arenita, como la ardilla de la serie Bob Esponja.

domingo, enero 20, 2008

cocinando

hoy cociné mi primer tortilla!. Que importante, no?
Bueeno, hace rato que no cocinaba, y menos cosas nuevas.
Tortilla de papa con algo de acelga.
Imagen:yummy!

martes, noviembre 20, 2007

lunes, noviembre 12, 2007

Nike 10k 2007

Ayer corrí la carrera Nike 10k del 2007.
Mucha gente!, 25.000 personas era el cupo ese año. Las remeras fueron celestes esta vez. Buena tela tiene esta empresita de ropa :)
Ademas de pasar un buen rato con gente que también le gusta correr, pude mejorar mi mejor tiempo en esta distancia.
Mi meta era los 48 minutos. Una mejora del 20% con respecto al año pasado.
Fue una grata sorpresa cuando ví que la terminé en 46 minutos 33 segundos (tiempo oficial, se perdía tiempo en la largada porque no tomaron el tiempo con el chip en ese punto)
Son unos 4 minutos, 39 segundos por kilómetro de promedio.
Tengo que pensar cual va a ser la meta para el próximo año :)

to blog or not to blog?

Hola,
algo que me cuesta mucho es postear mas o menos constantemente en este blog.
A lo mejor, no lo encuentro útil.
Será que uno piensa que es una pérdida de tiempo?
Será que nadie me lee?

Para que bloguea uno?
para decirle al mundo "Aca estoy yo!"? "Mirenme!, que groso que soy" ?
para no sentirse solo?
para que no se pierda un pensamiento en el tiempo?
para compartir este pensamiento y , con suerte, generar un debate con los comentarios?

no se, son todas buenas razones y ponerlas así puede que me sirva para avivar mi post rate.

pensando en voz alta....

martes, agosto 14, 2007

Adidas 15k is nothing en Puerto Madero


El domingo 12 corrí la Adidas "15k is nothing", que se realizó en Puerto Madero, Bs.As.

Puesto: 1657
Nro: 2264
Tiempo neto: 1:21:41
T. x km: 5:26

jueves, julio 26, 2007

Web2.0

Este video de la Web2.0 me parece muy bueno!:

miércoles, mayo 30, 2007

Lucky cat!


El bichito negro que sostiene Nadia es el nuevo integrante de la familia. Por ahora se llama Lucky. Ya van 3 los gatos! Es tremendamente juguetón y no tuvo problemas de adaptación.
Lo 'adoptamos' desde la página de DeRemate.com.ar.
Posted by Picasa

lunes, mayo 28, 2007

Origenes - Fiestas Mayas

Viernes 25 de Mayo, feriado nacional: fui a correr los 10 kilómetros de esta carrera. Un día hermoso para correr. Estaba algo frío a las 8 AM, pero despues del calentamiento no se notó.
Es un circuito muy lindo
Además, mejoré como en un minuto y medio mi tiempo de 10km en la carrera anterior.
Mi clasificación según la página de resultados:
Posicion: 1121
Número: 1537
Tiempo: 51:28
Promedio x KM: 05:09

Si tomo en cuenta el minuto y medio que perdí en la largada, logré alcanzar mi objetivo de hacer los 10km en 50 minutos!!!
Me puse esta meta luego de la Nike 2006, que la hice en una hora aproximadamente.
Posted by Picasa

Amanecer

Esta es una foto que saqué mientras iba a trabajar. Está sacada desde dentro del colectivo.
Que temprano que es!
Posted by Picasa

Dibujo de Nadia

Hola,
para retomar mis posts, nada mejor que mostrar el dibujo de mi hija Nadia.
Aca se puede observar, de izq. a derecha, a papá, tutu(!?) y mamá...no, no se quien es Tutu :D
Posted by Picasa

miércoles, octubre 26, 2005

Mi ultimo post es este blog

Creo que este va a ser mi ultimo post a este blog.
Estoy migrando al blog de wordpress.com
No voy a contar xque es mejor ese blog, vayan y fijense. Por lo menos a mi me convence mas.

Por favor, sigan visitandome en mi nuevo blog!!!!

miércoles, octubre 12, 2005

Hoy lei que MS y Yahoo estan por unirse para interoperar sus programas de IM

La suma de los usuarios de MS Messenger y Yahoo Messenger seria enorme! La noticia dice con esto en EEUU alcanzaria al AOL Messenger. Mira vos, estos yankies usan AOL y toda esa basura. Tipico. No es que los sudamericanos seamos mejores, al contrario, siempre usando la basura de la mayoria sin pensar lo que se hace.
Como sea, es obvio que en esta decisión influyó que Google haya sacado su GoogleTalk.

Enlace a la info

Esperemos que esta "alianza" no haga que Yahoo deje de hacer su protocolo abierto y siga manteniendo su cliente para otros sistemas operativos. Hay que estar atentos!

Son tiempos interesantes...