martes, abril 09, 2013

Cansado de que se duerman tus free apps en Heroku ?
Podés usar un servicio de monitoreo de sitios gratuito para mantenerla arriba.
Yo estoy probando uptimeRobot que permite tener 50 sitios y hace un ping c/5 minutos.
Buenísimo, no?

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