Diferencia entre extend e include (extend vs include)
La diferencia entre extend e include puede ser confusa a veces, por eso voy a intentar aclarar, como creo yo que es. Pero primero echemos un vistazo al rdoc
Obj.extend Mod.include



A jugar...
Vamos a poner este código de ejemplo:
module A def a puts "Has llamado a A#a" end end module B def b puts "Has llamado a B#b" end end class C include A extend B end
La diferencia es que los métodos del módulo A son para la instancia y los métodos del módulo B son para la clase por lo que sería lo mismo que hacer:
class D include A class << self include B end end
Esta técnica es muy usada en frameworks como merb. Cuando un objeto es incluido, se llama a:
include InstanceMethods extend ClassMethods
Este es uno de los usos más típicos que he visto de include vs extend
Otras diferencias que me vienen a la mente son:
- extend es un método público, mientras que include no.
-
Si se llama a una a extend de una instancia, es lo mismo que si la abrieses e incluyeses el módulo.
o = Object.new o.extend A class << o include B end o.a #=> Has llamado a A#a o.b #=> Has llamado a B#b
Y hasta donde yo se... no tiene mucho más misterio
<>30, dic | 3 comentarios cientifico compártelo Tags: classmethods, class, instancemethods, instance, include, extend, ruby
Añadir métodos a una clase o estancia creada
Actualización: Este post es de cuando empecé con ruby.
Pues más sencillo de lo que parece. Como es normal en ruby, la lógica aplastante por encima de todo y un simple "<<" bastará.
Por ejemplo.
En vez de hacer
def di_hola puts "hola chaval!" end
podemos hacer:
class << self def di_hola puts "hola chaval!" end end
O su manera enfuscada:
class << self; def hey; puts "hola chaval!"; end
Como llamar a metodos de un modulo
Estaba yo intentando llamar a un método de un helper. Probando encontré un método que sirve para extender clases con módulos.
Sé que esto es básico, pero por desgracia no me he leído todavía ningún libro sobre ruby. He de suponer que lo que estoy haciendo es un mixin de clases con los módulos.
La palabra clave es extend
Por ejemplo, si estoy en un ./script/console de rails, solo tengo que hacer un:
self.extend CommentsHelper
Para completar, es saber que módulos están cargados en la clase actual, vamos, que mixins se presentan.
self.extended_by
Espero que nadie pierda el tiempo que perdí yo intentando hacer esto.
30, dic | 3 comentarios cientifico compártelo Tags: extended by, rails, puts, extend, script, self, ruby
Descarga de urls desde consola
El otro día (hará ya 6 meses), poniendo plugins de compiz, tenía que descargar de manera rápida unos 8 o 9 urls. Como el ratón me parece un dispositivo bastante lento, quería hacerlo desde consola (con wget, curl o fetch), y se me ocurrió esta manera, que resultó bastante buena.
cat | xargs wget
Ahora un simple copy y paste de las urls, y a descargar.
Solo queda hacer que se descarguen todas de manera concurrente.
Nota: Solo podrás descargar un número máximo de archivos. Para saber este número teclea:
getconf ARG_MAX
Nota2: Con curl quedaría algo así como:
cat | xargs curl -O
30, dic | sin comentarios cientifico compártelo Tags: arg max, cat, getconf, descargar, wget, curl
Mod rails, auth y allow todo junto.
<VirtualHost *:80>ServerName test.jobandtalent.comServerAlias office.jobandtalent.com test.jobandtalent.comDocumentRoot /home/jobandtalent/jobandtalent/publicRailsEnv talentorris<Location "/">Order deny,allowDeny from allAllow from 192.168.1Satisfy AnyAuthType BasicAuthName "CI Machine is only for authorized personal only"AuthUserFile /etc/apache2/passwordsRequire user jobandtalent</Location></VirtualHost>
1, dic | sin comentarios cientifico compártelo
Webs Autodeployables
Una de las últimas novedades en un proyecto personal, es el autodeploye, que pese a sonar tan mal, mola mucho.
9, nov | 2 comentarios cientifico compártelo
ReverseProxy de Apache a Monit
9, nov | sin comentarios cientifico compártelo Tags: sistemas
Queridos reyes vagos...
Estoy hasta las narices de que se acabe la cerveza y no tener otra. Son momentos en los que se pasa realmente mal, ya que tienes cigarro y no tienes cerveza para acompañarle. :-)
El señor todo poderoso, en respuesta a mis plegarias, me encontró la respuesta que buscaba.
2, nov | 3 comentarios cientifico compártelo
