Re: Escopo de classes de plugin não funciona na prática

Bráulio Bhavamitra braulio at eita.org.br
Wed Jul 3 18:20:17 BRT 2013


2013/7/2 Bráulio Bhavamitra <braulio at eita.org.br>

> Vou explicar o problema em detalhe. Fiz uma reprodução simples aqui.
>
> Vamos usar um caso prático, o shopping_cart.
> Crie o arquivo plugins/shopping_cart/lib/shopping_cart/display_helper.rb
> com o seguinte código:
> module ShoppingCartPlugin::DisplayHelper
>   def self.included base
>     puts 'incluido'
>   end
> end
>
> Agora entre no console e rode:
> > include ShoppingCartPlugin::DisplayHelper
> (irb:5): warning: toplevel constant DisplayHelper referenced by
> ShoppingCartHelper::DisplayHelper
> >
>
> Agora para ver a coisa funcionando mude a declaração da classe
> ShoppingCartPlugin para
> module ShoppingCartPlugin
>
> Reabra o console e rode o mesmo código. O 'incluido' agora é imprimido!!
>
> É um questão da linguagem ruby... Daí se entende pq ActiveRecord::Base ao
> invés de não um simples ActiveRecord. Os módulos, e não as classes, servem
> completamente para escopo...
>
> Bom, acho um problema grave... Qualquer modulo declarado no plugin terá
> isto...
> Envolve refazer o padrão de classes dos plugins para algo parecido com o
> ActiveRecord... E é claro mudar todos os plugins atuais..
>
> abraços,
> bráulio
>
>
> 2013/7/1 "Aurélio A. Heckert" <aurelio at colivre.coop.br>
>
>>  Sério?
>>
>> Não tentei reproduzir o seu caso, mas testei outro possível conflito:
>>
>> >> Image
>> => Image(id: integer, parent_id: integer, content_type: string, ...,
>> thumbnails_processed: boolean)
>> >> FilePresenter::Image
>> => FilePresenter::Image
>>
>> >> class FilePresenter; puts Image; end
>> FilePresenter::Image
>> => nil
>> >> puts Image
>> Image
>> => nil
>>
>> Ufa... nesse caso não ocorreu conflito.
>> *Como acontece o conflito no seu caso?*
>>
>>
>>
>> On 01-07-2013 11:50, Bráulio Bhavamitra wrote:
>>
>> Olá comunidade,
>>
>>  Suponha que eu tenha um plugin x e que declare a classe
>> XPlugin::DisplayHelper em plugins/x/lib/x_plugin/display_helper.rb
>>
>>  Esta classe vai conflitar com a definida em
>> app/helpers/display_helper.rb!!
>>
>>  Alguém já pensou nesta questão?
>>
>>  abraços,
>> bráulio
>>
>>  --
>> "Lute pela sua ideologia. Seja um com sua ideologia. Viva pela sua
>> ideologia. Morra por sua ideologia" P.R. Sarkar
>>
>> EITA - Educação, Informação e Tecnologias para Autogestão
>> http://cirandas.net/brauliobo
>> http://eita.org.br
>>
>>
>> _______________________________________________
>> Noosfero-br mailing listNoosfero-br at listas.softwarelivre.orghttp://listas.softwarelivre.org/cgi-bin/mailman/listinfo/noosfero-br
>>
>>
>>
>> --
>>
>> *Aurélio A. Heckert (aka Aurium)*
>> http://softwarelivre.org/aurium
>> *COLIVRE — Coop. de Tecnologias Livres*
>> http://colivre.coop.br
>>
>> *Inkscape* — Desenhe Livremente
>> http://inkscapeBrasil.org
>>
>> _______________________________________________
>> Noosfero-br mailing list
>> Noosfero-br at listas.softwarelivre.org
>> http://listas.softwarelivre.org/cgi-bin/mailman/listinfo/noosfero-br
>>
>>
>
>
> --
> "Lute pela sua ideologia. Seja um com sua ideologia. Viva pela sua
> ideologia. Morra por sua ideologia" P.R. Sarkar
>
> EITA - Educação, Informação e Tecnologias para Autogestão
> http://cirandas.net/brauliobo
> http://eita.org.br
>



-- 
"Lute pela sua ideologia. Seja um com sua ideologia. Viva pela sua
ideologia. Morra por sua ideologia" P.R. Sarkar

EITA - Educação, Informação e Tecnologias para Autogestão
http://cirandas.net/brauliobo
http://eita.org.br
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-br/attachments/20130703/0f44da6c/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: logoColivre_p.gif
Type: image/gif
Size: 5576 bytes
Desc: not available
URL: <http://listas.softwarelivre.org/pipermail/noosfero-br/attachments/20130703/0f44da6c/attachment-0001.gif>


More information about the Noosfero-br mailing list