Publicando uma gem
Como programadores as vezes temos que escrever alguma lib durante o desenvolvimento de novas funcionalidades no projeto que estamos trabalhando. Normalmente já encontramos libs prontas, mas em outros casos não, ai temos que botar a mão na massa. No meu caso tive que implementar o algoritmo de validação e geração de chave de nota fiscal eletrônica (caso esteja curioso, a documentação sobre o algoritmo pode ser encontrada aqui). Essa é uma parte útil no projeto mas que não faz parte da lógica de negócio em se. Então é uma boa ideia extrair e isolar a lib como uma dependência.
Como vocês já devem ter concluído a aplicação em questão é em RubyOnRails, mas essa é uma prática legal para projetos em qualquer linguagem, além de contribuir com a comunidade é uma experiência interessante.
No exemplo aqui a lib é bem pequena, pequena mesmo, é somente uma classe com três métodos. Mas isso não importa, o interessa é entender como é o processo de publicação da gem. Então, vamos lá!
Pré Requisito
Antes de iniciar tenha o ambiente ruby instalado na maquina assim como o RubyGems, caso não tenha instalado segue os links: Ruby, RubyGems.
Construindo a gem
A primeira coisa a se fazer é criar um arquivo do tipo .gemspec na pasta do projeto há ser publicado, a baixo segue o comando de criação e como ficou a pasta no caso:
$ touch gerador_nfe.gemspec
$ tree
├── gerador_nfe.gemspec
└── lib
└── nfe.rb
No gemspec podemos definir o nome, versão, data de criação e outras informações sobre a nossa gem. Veja a baixo como ficou o arquivo:
Gem::Specification.new do |s|
s.name = 'gerador_nfe'
s.version = '1.0.0'
s.date = '2020-06-11'
s.summary = "Gerador e validador de chaves nfe"
s.description = "Gerador e validador de chaves nfe"
s.authors = ["Luiz Filipe"]
s.email = 'luizfilipeneves@gmail.com'
s.files = ["lib/nfe.rb"]
s.homepage = 'https://rubygems.org/gems/gerador_nfe'
s.license = 'MIT'
end
Podemos observar que no arquivo temos código ruby, assim podemos aproveitar e deixar algumas informações dinâmica, como a versão da gem.
...
s.version = NFE::VERSION
...
Após as configurações podemos rodar o comando para construir a gem e em seguida instala-la no nosso ambiente.
$ gem build nfe.gemspec
>> Successfully built RubyGem
>> Name: gerador_nfe
>> Version: 1.0.0
>> File: gerador_nfe-1.0.0.gem
O resultado é o arquivo gerador_nfe-1.0.0.gem que vamos usar para instalar a gem criada.
$ gem install ./gerador_nfe-1.0.0.gem
>> Successfully installed gerador_nfe-1.0.0
>> Parsing documentation for gerador_nfe-1.0.0
>> Done installing documentation for gerador_nfe after 0 seconds
>> 1 gem installed
Agora já podemos testar a gem no irb.
$ irb
2.6.5 :001 > require 'nfe'
=> true
2.6.5 :002 > NFE.generate
=> "03706282961739875112343640273736458671450939"
2.6.5 :003 >
Publicando no rubygems
O primeiro passo é fazer uma conta no https://rubygems.org/sign_up, se ainda não tem, faça isso.
Com a conta criada publicar é bem fácil. Primeiro faça o login:
$ gem signin
Já podemos subir a gem para o repositório:
$ gem push gerador_nfe-1.0.0.gem
>> Pushing gem to https://rubygems.org...
>> Successfully registered gem: gerador_nfe (1.0.0)
Pronto. Agora qualquer um pode baixar sua gem. Para verificar se está tudo certo vamos listar a gem e instalar a partir do repositório.
$ gem list -r gerador_nfe
>> *** REMOTE GEMS ***
>>
>> gerador_nfe (1.0.0)$ gem install gerador_nfe
>> Successfully installed gerador_nfe-1.0.0
>> Parsing documentation for gerador_nfe-1.0.0
>> Done installing documentation for gerador_nfe after 0 seconds
>> 1 gem installed
Conclusão
O processo é rápido e simples. É uma boa prática para manter o projeto enxuto e focado. No site do RubyGems você consegue encontrar muito mais informações. Até mais!