Forum: Rails-ES Clases con el mismo nombre

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
743d0b6ac31e33f461ba061e58c4c63e?d=identicon&s=25 Xurde Fernandez (xurdekio)
on 2009-04-24 08:45
Buenas,
 hoy nos hemos encontrado con un problema usando dos gemas de excel.
Usamos una para leer informes y otra para generarlos.
 El problema es que ambas gemas tienen una clase Excel definida..
 Existe alguna manera de especificar que clase Excel debe usar en cada
clase? Alguna manera de marcar el namespace o desambiguar las clases?

 Gracias.
Adce10d7f1dbabcdab8f525a59cec32f?d=identicon&s=25 Andrés Gutiérrez (andresgutgon)
on 2009-04-24 10:00
(Received via mailing list)
Si esperas un poco te llegara una repuesta buena. Pero si yo tuviera tu
problema y sólo conatase con mis escasoso conocimientos, probaría una
locura
del tipo hacer una clase mi que herede de una de las otras dos. Esta
clase
mi tendría un nombre diferente...en mi cabeza tiene sentido. Pero
llevarlo a
la práctica es otra cosa.

Un saludo

El 24 de abril de 2009 8:45, Xurde Fernandez <
ruby-forum-incoming@andreas-s.net> escribió:
Adce10d7f1dbabcdab8f525a59cec32f?d=identicon&s=25 Andrés Gutiérrez (andresgutgon)
on 2009-04-24 10:01
(Received via mailing list)
Perdón, por "clase mi" quería decir "clase mía"

El 24 de abril de 2009 9:59, Andrés gutiérrez
<andresgutgon@gmail.com>escribió:
4abebd2f6659dd76c634dd9f48c24a3f?d=identicon&s=25 David Arango (Guest)
on 2009-04-24 10:38
(Received via mailing list)
2009/4/24 Xurde Fernandez <ruby-forum-incoming@andreas-s.net>:
> Buenas,
>  hoy nos hemos encontrado con un problema usando dos gemas de excel.
> Usamos una para leer informes y otra para generarlos.
>  El problema es que ambas gemas tienen una clase Excel definida..
>  Existe alguna manera de especificar que clase Excel debe usar en cada
> clase? Alguna manera de marcar el namespace o desambiguar las clases?

El otro día leí un post justo sobre este tema:

http://blog.zerosum.org/2009/4/17/why-namespaces-a...

La solución sería utilizar módulos para aislar cada clase excel dentro
de un namespace propio, lo que no sé es si en tu caso se puede hacer.
Tampoco nos das muchos detalles ¿qué gemas estás utilizando?
39086eb3d9a1437276d07c08ea0c3821?d=identicon&s=25 Guillermo (Guest)
on 2009-04-24 11:21
(Received via mailing list)
2009/4/24 Xurde Fernandez <ruby-forum-incoming@andreas-s.net>

>  El problema es que ambas gemas tienen una clase Excel definida..


Se me ocurren dos maneras diferentes de solucionarlo.

a) La primera es modificar las gemas, cosa poco recomendada si son gemas
que
se piensan actualizar. Para ello, vendorizarlas sobretodo, nada de
instalarlas en el sistema.

b) Tener dos procesos. En uno cargas una y en otro cargas otra, y les
pones
ha hablar como amigos mediante drb(preferiblemente socket).

Explico un poco más esta segunda.
En la app cargo la gema de solo lectura, y esta se conecta al "demonio"
drb
y le pasa los parámetros para construir el excel.

Ambas soluciones creo que son válidas, la segunda me parece más
divertida y
más limpia, además de poder generar excels con una api clara y definida.
Además, tienes la ventaja (que no se si será el caso), de poder el
servidor
drb a escuchar en tcp, y tienes un generador de excel con una api
publica en
ruby para toda la red.

Creo que serían las dos soluciones más elegantes.

Un Saludo.

--
Guillermo Álvarez

Sent from Madrid, Comunidad de Madrid
6f952bee7570a3db2ecba5b06c0062b3?d=identicon&s=25 Fernando Guillen (fguillen)
on 2009-04-24 11:31
(Received via mailing list)
El día 24 de abril de 2009 11:20, Guillermo <guillermo@cientifico.net>
escribió:>
>
> 2009/4/24 Xurde Fernandez <ruby-forum-incoming@andreas-s.net>
>>
>>  El problema es que ambas gemas tienen una clase Excel definida..

Seguramente las gemas tengas la clase dentro de un módulo por lo que
se le podrá invocar utilizando la cadena de namespaces como indica
David Arango.

Qué gemas son?

f.
39086eb3d9a1437276d07c08ea0c3821?d=identicon&s=25 Guillermo (Guest)
on 2009-04-24 12:13
(Received via mailing list)
2009/4/24 Fernando Guillen <fguillen.mail@gmail.com>

> Seguramente las gemas tengas la clase dentro de un módulo por lo que
> se le podrá invocar utilizando la cadena de namespaces como indica
> David Arango.
>

Te sorprenderías la de gemas que no hacen eso, y el peligro no está ahí,
sino cuando una gema que crees inofensiva, te sobreescribe métodos del
core.
No me acuerdo ahora, pero una vez me volví loco buscando que pasaba, y
una
gema había sobreescrito Object#to_s. No recuerdo el caso en concreto, ya
que
mi reciente cambio de edad me lo impide, pero por si acaso, y si tienes
dudas, revisa el código de una gema. Que al fin y al cavo, no sabes que
gema
puede contener un rootkit. Desconfia.

Lo de los namespaces, de vez en cuando pasa, y es una putada. Lo bueno
que
es que suele pasar en gemas antiguas(sin mucha actualización), ya que
las
nuevas y más brillantes, suelen traer todas el namespace correspondiente
al
nombre de la gema, o por lo menos un nombre único, lo hace técnicamente
imposible el solapamiento de clases.
743d0b6ac31e33f461ba061e58c4c63e?d=identicon&s=25 Xurde Fernandez (xurdekio)
on 2009-04-29 16:34
Gracias por todas las soluciones. Al final lo arreglamos gracias a que
una de las gemas si venia en forma de modulo y aprovechamos para usar el
namespace, la otra venia definida como un clase y poco que hacer con
ella...
This topic is locked and can not be replied to.