Convencin para extender ActiveRecord
Por Ismael en 26/11/2008 en Desarrollo, Ruby & Rails, artculosNo hay una sino muchsimas formas de extender ActiveRecord. Buceando entre los cientos de plugins y extensiones disponibles encuentro distintas estrategias para inclur mdulos, sobreescribir mtodos o configurar opciones.
Me encontr especialmente frustrado al buscar alguna forma ms o menos estndar de definir macros o mtodos de clase que definen nuevo comportamiento, algo comn en los infinitos plugins de una sola lnea como acts_as_tree, acts_as_versioned (y toda la serie “acts_as”) o mis propios ar_publish_control y sluggable_finder.
-
-
class Post < ActiveRecord::Base
-
acts_as_tree #
-
end
-
Lo siguiente es un boceto para una convencin orientada a escribir extensiones de ActiveRecord en forma de gemas. Una gema de ejemplo, incluyendo tests, se encuentra aqu.
Control de publicacin en ActiveRecord
Por Ismael en 23/11/2008 en Proyectos, Ruby & Rails, artculosGema ruby para agregar control de publicacin a tus modelos ActiveRecord
ar_publish_control es una gema Ruby para aadir control de publicacin a tus modelos ActiveRecord.
En muchos de los proyectos en que he trabajado, especialmente administradores de contenido, se necesita algn tipo de control sobre las fechas y status de publicacin de informacin. Nada nuevo, pero los plugins y libreras que encontr no hacan exactamente lo que quera. Mi gema est basada en Acts as Publishable, un sencillo plugin para Rails al que agregu funcionalidad y actualic para funcionar con las versiones ms recientes de ActiveRecord.
Decid reeditar el plugin como una gema porque eso me permite tener tests autnomos (en rspec) y tambin usar la funcionalidad con otros frameworks. En este momento lo uso para un proyecto Rails en el trabajo y para un proyecto peronal en Merb.
Como estamos acostumbrados con ActiveRecord, usar ar_publish_control en tus modelos no podra ser ms sencillo:
-
-
class Post < ActiveRecord::Base
-
publish_control
-
end
-
Bsicamente, eso agrega fecha de inicio y fin de publicacin a tus modelos, por medio de una serie de named_scopes que permiten haces cosas como:
-
-
@post = Post.create(:unpublish_at => 2.weeks.from_now)
-
Lee el resto de este artículo »
Patrones jQuery: toggleTarget
Por Ismael en 22/9/2008 en artculos, javascript, jqueryHace un tiempo recopilo funciones y utilidades que, usando jQuery, me encuentro usando una y otra vez en distintos proyectos. Una de las ventajas de jQuery es la abundancia de plugins disponibles, pero normalmente éstos son más avanzados de lo que necesito y en algunos casos prefiero escribir estos “microplugines” que soluciones casos muy concretos y al mismo tiempo comunes.
El caso
Quieres uno o más links que despliegue un elemento escondido en la página, o lo esconda si el elemento está visible (por ejemplo un link “ver más”).
El efecto debe ser accesible: sin javascript, el browser debe simplemente mostrar el elemento normalmente y el link debe ser un “ancla” a éste. El caso es similar a un ejemplo publicado tiempo atrás para MooTools.
-
-
<a class="#contenido" class="js_collapse">Mostrar o esconder</a>
-
-
<div id="contenido">
-
Mostrar o esconder este contenido al presionar el ancla de arriba.
-
</div>
-
El código
-
-
(function($){
-
$.fn.toggleTarget = function(){
-
$(this).click(function(){
-
var target = $($(this).attr(‘href’));
-
target.toggle(‘fast’);
-
return false;
-
});
-
}
-
})(jQuery);
-
Uso
-
-
$(function(){
-
$(‘a.js_collapse’).toggleTarget();
-
});
-
La mayoría de estas utilidades las tengo bajo control de versiones en mi Github. Sientanse libres de hacer un fork y contribuír.
Link: jQuery patterns en Gihub.