Colocando plugins do rails dentro de plugins do Noosfero

Bráulio Bhavamitra brauliobhavamitra at gmail.com
Mon Apr 15 17:07:59 BRT 2013


Bom, fiz uma investigação de como o rails inicia os plugins.
Ele usa através do Rails::Initializer as classes Rails::Plugin::Loader e
Rails::Plugin. Estas duas últimas são altamente dependentes do initializer,
e por isso o código delas não pode ser reutilizado sem o mesmo. Pretendo
extrair os códigos relacionados e implementar no init_system.

abraços,
bráulio


2013/4/15 Bráulio Bhavamitra <brauliobhavamitra at gmail.com>

> A parte do código que fiz se refere a isto no texto:
> *lib/*
>
> This is the directory in which all of the plugin code is contained. Rails
> adds this directory to the Ruby load path as well as the Rails
> Dependencies load path.
>
> For example, assume you have a class, MyPlugin, in *lib/my_plugin.rb*.
> Since it is in the Ruby load path, a simple require 'my_plugin' will find
> it. But since Dependencies auto loads missing constants, you could also
> load the file simply by referring to MyPlugin in your plugin.
>
>
> 2013/4/15 Bráulio Bhavamitra <brauliobhavamitra at gmail.com>
>
>> Ok Rodrigo,
>>
>> Acabo de procurar e acho que deveria fazer usando o config.plugins_path
>>
>> http://www.oreillynet.com/pub/a/ruby/excerpts/ruby-advanced-rails/rails-plugins.html
>>
>> Vou fazer esta modificação no core e depois o merge request.
>>
>> abraços,
>> bráulio
>>
>>
>> 2013/4/15 Rodrigo Souto <rodrigo at colivre.coop.br>
>>
>>> Diga Bráulio,
>>>
>>> Isso que você está fazendo no plugin pode ser feito como procedimento
>>> padrão para todos os plugins do Noosfero. Algo parecido já é feito para
>>> incluir os controllers e libs dos plugins. Dê uma olhada no arquivo
>>> lib/noosfero/plugin.rb no método init_system. Dessa forma, agente já
>>> permite que todo plugin possa ter um sub-diretório /vendor/plugins e
>>> os plugins usados pelo plugin já serem incluidos automaticamente.
>>>
>>> Bráulio Bhavamitra escreveu isso ai:
>>> > Olá comunidade,
>>> >
>>> > Depois do rodrigo souto falar sobre o processo de pluginização das
>>> buscas
>>> > via solr, que envolve colocar o plugin rails acts_as_solr_reloaded
>>> apenas
>>> > neste plugin de buscas, eu e Hugo fomos tentar fazer este processo
>>> dentro
>>> > do plugin de coletivos de consumo (distribution).
>>> >
>>> > Precisamos colocar o plugin https://github.com/randym/axlsx dentro do
>>> > distribution. Para isso, colocamos o código dele dentro da pasta
>>> > plugins/distribution/vendor/plugins/axlsx e no arquivo
>>> > plugins/distribution/lib/distribution_plugin.rb colocamos o seguinte
>>> código:
>>> > [ ActiveSupport::Dependencies.load_paths, $:].each do |path|
>>> >   vendor = Dir.glob File.join(File.dirname(__FILE__),
>>> > '/../vendor/plugins/*')
>>> >   vendor.each do |plugin|
>>> >     path << plugin + '/lib'
>>> >   end
>>> > end
>>> >
>>> > Este código faz com que os plugins do plugin distribution sejam
>>> carregados
>>> > e funcionem perfeitamente.
>>> > Gostaria de saber do Rodrigo ou outra pessoa da comunidade como fizeram
>>> > isto e se já há alguma padronização para tal.
>>> >
>>> > PS: plugins do noosfero deveriam chamar aplicativo ou outro nome sem
>>> > conflito...
>>> >
>>> > abraços,
>>> > bráulio
>>>
>>> > _______________________________________________
>>> > Noosfero-br mailing list
>>> > Noosfero-br at listas.softwarelivre.org
>>> > http://listas.softwarelivre.org/cgi-bin/mailman/listinfo/noosfero-br
>>>
>>>
>>> --
>>> Rodrigo Souto <rodrigo at colivre.coop.br> :: 55 71 8131-7714
>>> Colivre - Cooperativa de Tecnologias Livres
>>> http://www.colivre.coop.br/
>>>
>>> _______________________________________________
>>> Noosfero-br mailing list
>>> Noosfero-br at listas.softwarelivre.org
>>> http://listas.softwarelivre.org/cgi-bin/mailman/listinfo/noosfero-br
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-br/attachments/20130415/c6f94603/attachment.html>


More information about the Noosfero-br mailing list