Old Emmanuel Oga's Weblog (new one is at www.emmanueloga.com)

How to spec a rails plugin?

Posted in rails, rspec, Uncategorized by emmanueloga on junio 25, 2009

Basically, the same way you spec a rails application.
The cool trick is you take advantage of the spec_helper.rb of by loading it in the spec_helper of your plugin.

# ../vendor/plugin/YOUR_PLUGIN/spec/spec_helper.rb
begin
  # load your main app spec_helper
  require File.dirname(__FILE__) + '/../../../../spec/spec_helper'
rescue LoadError
  puts "You need to install rspec in your base app"
  exit
end

I took this idea from Pat Maddox’s rspec-plugin-generator. You can use that generator to generate the basic plugin boiler plate for you.

The caveats are, you need to have rspec installed on your main app and you need to actually have the plugin installed in a rails application to test it. In any case, this works for my current needs.

For more info see this post.

Reunion Ruby Argentina del sábado pasado

Posted in rails, rspec, ruby by emmanueloga on diciembre 6, 2008

Con tan solo una semana de demora :), una pequeña descripción de la reunir del sábado pasado con los muchachos de #ruby-ar.

Ricardo Markiewicz consiguió el aula en la facultad de ingeniería, donde estuvimos muy cómodos a pesar del calor, y  fue el “maestro de ceremonias”.

Matías Pablo Brutti nos habló muy brevemente acerca de uno de los proyectos en los que trabaja, sicherheit. Ojalá Matías pueda dar una charla más prolongada acerca de seguridad en aplicaciones web en alguna próxima reunión :).

Luís Lavena nos mostró rake-compiler, una gema que contiene tareas de rake que ayudan a cross-compilar código. Con rake-compiler es muy sencillo compilar extensions de ruby que funcionen tanto para un sistema operativo basado en unix como para Windows, ahora que el one click installer utiliza mingw como compilador. Luís utilizó cucumber para planear y testear la funcionalidad de su gema. Además, mostró algunas deficiencias que a veces cometemos por “vagancia”, como hardcodear paths a herramientas del sistema en los scripts de instalación. Además, Luís se incluyo el modulo acts_as_photographer y sacó las fotos que pueden ver más abajo.

Pedro Visintin invitó a Pelle Braendgaard, desarrollador de la gema  http://oauth.rubyforge.org/, quien nos habló un poco de porque querríamos utilizar OAuth para compartir información sensible de los usuarios de nuestras aplicaciones.

Además, Pedro dió su propia charla: “Como ser freelancer y no morir en el intento”. Nos habló de los riesgos que corremos como freelancers y como prepararnos para los mismos. Nos animó a no tomar nuestra profesión como un trabajo, sino mas bién disfrutar de lo que hacemos, y nos recomendó este libro. También, he aqui los slides de su charla.

Rafaél Bidegain, representando a CaFeLUG,  trajo algunos libros que se sortearon al final de la reunión, junto con una remera que trajo Pedro. Obviamente yo no me gane nada jajaja.

Como resumen todo muy bueno, ¡que se repita!

Tagged with: ,

Meeting RubyArg (nos visitó Marcel Molina Jr., que calidad!)

Posted in people, rails, rspec by emmanueloga on agosto 18, 2008

El pasado Viernes Pedro Visintin organizo una reunion de railers, con la presencia de un invitado deluxe: Marcel Molina Jr.! Estuvo todo muy bueno, gracias Pedro por organizar el encuentro. No solo charlamos de temas muy interesantes, sino que tambien aprendi un par de lecciones fotográficas:

Diego se va

Diego se va

Otra vez la misma foto

Otra vez la misma foto

No entramos todos

No entramos todos

Ahora si entramos todos

Ahora si entramos todos

Tagged with: , , ,

Using link_to, url_for, path methods from arbitrary places

Posted in rails, rspec, ruby by emmanueloga on mayo 30, 2008

This is one thing I always forget, so I will post it to have it as reference.

If you need to call url_for or path methods (e.g.: root_path) from outside a controller, a view or a helper (perhaps inside a class lying somewhere inside RAILS_ROOT/lib/**/*), you will need to:

include ActionController::UrlWriter

If you also want to use link_to, you will need to:

include ActionView::Helpers::UrlHelper
include ActionController::UrlWriter

I include the two modules as I will probably want to use path methods in my link_to. Also notice that the UrlWriter module comes after the UrlHelper module.

“But it does not work!” I can hear you scream… If you get a message like this:

You have a nil object when you didn't expect it!
The error occurred while evaluating nil.url_for
(eval):17:in `project_stories_path'

Fear not, you may not have included the files in the right order. That message will appear if you include ActionController::UrlWriter before including ActionView::Helpers::UrlHelper. Just stick to the order I show above and the message will disappear.

BDD en rails y “RSpec no me toma los parametros en spec.opts !!!”

Posted in rails, rspec, ruby by emmanueloga on octubre 22, 2007

Hace tiempo que investigaba la mejor manera de usar specs en mi aplicacion rails. Resulta que le he encontrado : RSpec.

En realidad me convencio Luis Lavena en una breve conversacion que tuvimos en CafeConf 2007:

“Che es verdad que rspec es dificil de usar y un plomo porque te rompe todos los spec con cada nueva version?”

“No, nada que ver! Callate!” — bueno creo que el callate lo agregue yo, pero basicamente fue asi 🙂

Hasta ese momento habia estado usando test-spec, lo que no es mas que un simple wrapper sobre Test::Unit. RSpec es otra cosa, una completa libreria basada en el concepto de “Matchers“. Para dar soporte a rails, existe un plugin llamado rspec_on_rails que define muchos matchers y tasks de rake para simplificar la vida. Se recomienda instalar ambos (rspec y rspec on rails) como plugins de la aplicacion.

Al principio me asusto la presentacion medio “rara” de su documentacion (ver pagina web). Sin embargo, no es dificil agarrarle el ritmo a la sintaxis. Muy recomendable.

P.D.: Al usar RSpec on Rails, estuve un rato largo tratando de averiguar porque no me generaba el hermoso reporte html. Resulta que en el archivo spec/spec.opts cada opcion que separarias por espacios en la linea de comando hay que separarla por saltos de linea!!! (Siii… intuitivo). Por lo tanto, para lograr salida html en los reportes, spec.opts debe quedar algo parecido a esto:

–colour
–format
html:doc/results.html
–loadby
mtime
–reverse

Ahora en el directorio doc encontraran un hermoso results.html que lucira algo asi:

Salida Rspec en HTML

Gracias Nelson por el tip.