From 2f8758e7775390d12430725cc60e84405fb1df28 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 Sep 2024 15:01:43 +0000 Subject: [PATCH 1/4] Bump puma from 6.4.2 to 6.4.3 Bumps [puma](https://github.com/puma/puma) from 6.4.2 to 6.4.3. - [Release notes](https://github.com/puma/puma/releases) - [Changelog](https://github.com/puma/puma/blob/master/History.md) - [Commits](https://github.com/puma/puma/compare/v6.4.2...v6.4.3) --- updated-dependencies: - dependency-name: puma dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 87 +++++++++++++++++++++++++++++----------------------- 1 file changed, 48 insertions(+), 39 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 0a630c5..1c8ab4e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,81 +3,90 @@ GIT revision: cd928e87554bcd9eceadea6cf5a9a777f756b1b8 specs: brcobranca (11.0.0) - activesupport (>= 5.2.6) fast_blank parseline (>= 1.0.3) - rghost + rghost (>= 0.9.8) rghost_barcode (>= 0.9) +GIT + remote: https://github.com/shairontoledo/rghost.git + revision: 93240b15141abd9be961ab7b1c68c77fc445e4e7 + specs: + rghost (0.9.9) + GEM remote: https://rubygems.org/ specs: - activesupport (7.1.3.4) - concurrent-ruby (~> 1.0, >= 1.0.2) + activesupport (7.2.1) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb i18n (>= 1.6, < 2) + logger (>= 1.4.2) minitest (>= 5.1) - tzinfo (~> 2.0) - connection_pool (>= 2.2.5) - base64 (>= 0) - drb (>= 0) - mutex_m (>= 0) - builder (3.2.4) - concurrent-ruby (1.3.1) - dry-container (0.11.0) - concurrent-ruby (~> 1.0) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + base64 (0.2.0) + bigdecimal (3.1.8) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) + drb (2.2.1) dry-core (1.0.1) concurrent-ruby (~> 1.0) - dry-inflector (1.0.0) + zeitwerk (~> 2.6) + dry-inflector (1.1.0) dry-logic (1.5.0) concurrent-ruby (~> 1.0) - dry-core (~> 0.5, >= 0.5) + dry-core (~> 1.0, < 2) + zeitwerk (~> 2.6) dry-types (1.7.2) + bigdecimal (~> 3.0) concurrent-ruby (~> 1.0) - dry-container (~> 0.3) - dry-core (~> 0.5, >= 0.5) - dry-inflector (~> 0.1, >= 0.1.2) - dry-logic (~> 1.0, >= 1.0.2) + dry-core (~> 1.0) + dry-inflector (~> 1.0) + dry-logic (~> 1.4) + zeitwerk (~> 2.6) fast_blank (1.0.1) - grape (2.0.0) - activesupport (>= 5) - builder + grape (2.2.0) + activesupport (>= 6) dry-types (>= 1.1) - mustermann-grape (~> 1.0.0) - rack (>= 1.3.0) - rack-accept - i18n (1.14.5) + mustermann-grape (~> 1.1.0) + rack (>= 2) + zeitwerk + i18n (1.14.6) concurrent-ruby (~> 1.0) - minitest (5.23.1) - mustermann (3.0.0) + logger (1.6.1) + minitest (5.25.1) + mustermann (3.0.3) ruby2_keywords (~> 0.0.1) mustermann-grape (1.1.0) mustermann (>= 1.0.0) + mutex_m (0.2.0) nio4r (2.7.3) parseline (1.0.3) - puma (6.4.2) + puma (6.4.3) nio4r (~> 2.0) - rack (3.0.11) - rack-accept (0.4.5) - rack (>= 0.4) + rack (3.1.7) rghost_barcode (0.9) ruby2_keywords (0.0.5) + securerandom (0.3.1) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - base64 (0.2.0) - mutex_m (0.2.0) - bigdecimal (3.1.8) + zeitwerk (2.6.18) PLATFORMS ruby DEPENDENCIES + base64 + bigdecimal brcobranca! grape - puma - base64 mutex_m - bigdecimal - rghost 'https://github.com/shairontoledo/rghost.git' + puma + rghost! BUNDLED WITH 2.5.11 From bc885d3357161512f884f517e31199058d0e6810 Mon Sep 17 00:00:00 2001 From: Magno Costa Date: Thu, 1 Aug 2024 17:47:22 -0300 Subject: [PATCH 2/4] [UPD] README sobre o uso do Alpine como OS. --- README.md | 89 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 54 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index d349a42..cb5747e 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,11 @@ O projeto de gestão de Boletos, Remessas e Retornos Bancários https://github.c É interessante poder usar o projeto BRCobranca (escrito em Ruby) a partir de outras linguagens na forma de um micro-serviço REST. Mais especificamente, a [Akretion](http://www.akretion.com) que é a empresa que lidera a localização do Odoo no Brasil desde 2009 https://github.com/OCA/l10n-brazil e co-criou a fundação [OCA](https://odoo-community.org/) usa esse projeto para gerenciar Boletos, Remessas e Retornos a partir do ERP Odoo (feito em Python, módulo específico https://github.com/OCA/l10n-brazil/tree/14.0/l10n_br_account_payment_brcobranca). +A imagem usada no projeto é do OS [Alpine](https://hub.docker.com/_/alpine), o motivo é que por ser um Micro-Serviço quanto menor a imagem melhor e apesar de existir dentro das imagens [Ruby](https://hub.docker.com/_/ruby) tanto a opção Debian quanto Alpine a imagem criada a partir da versão "pura" acaba sendo menor( Ruby-Debian 746MB | Ruby-Alpine 565MB | Alpine 523MB ), existem diferenças entre o [Debian](https://pt.wikipedia.org/wiki/Debian) e o [Alpine](https://pt.wikipedia.org/wiki/Alpine_Linux) basicamente "na superfície" são alguns nomes de pacote e o instalador de pacotes, no Debian apt-get e no Alpine apk, outros comandos Linux são iguais, em caso de algum erro complexo o Debian pode acabar sendo usado. + # Funcionalidades -Imprime *Boletos*, gera arquivos de *Remessa* e lê os arquivos de *Retorno* nos formatos CNAB 240, CNAB 400 para os 16 principais bancos do Brasil (Banco do Brasil, Banco do Nordeste, Banestes, Santander, Banrisul, Banco de Brasília, Caixa, Bradesco, Itaú, HSBC, Sicredi, Sicoob, AILOS, Unicred, CREDISIS e Citibank). Mas o grande barato desse projeto é que fazemos isso com menos de 200 linhas de código! Já comparou quantas linhas de de código você tem que manter sozinho ou quase se for re-fazer na linguagem que você quer tudo que o BRCobranca já faz? Seriam dezenas de milhares de linhas e você nunca teria uma qualidade tão boa... +Imprime **Boletos**, gera arquivos de **Remessa** e lê os arquivos de **Retorno** nos formatos CNAB 240, CNAB 400 para os 16 principais bancos do Brasil (Banco do Brasil, Banco do Nordeste, Banestes, Santander, Banrisul, Banco de Brasília, Caixa, Bradesco, Itaú, HSBC, Sicredi, Sicoob, AILOS, Unicred, CREDISIS e Citibank). Mas o grande barato desse projeto é que fazemos isso com menos de 200 linhas de código! Já comparou quantas linhas de de código você tem que manter sozinho ou quase se for re-fazer na linguagem que você quer tudo que o BRCobranca já faz? Seriam dezenas de milhares de linhas e você nunca teria uma qualidade tão boa... # API @@ -88,18 +90,17 @@ TODO (contribuições bem vindas) No arquivo Gemfile.lock é possível alterar o repositório e o commit específico que será usado na criação da imagem, o que é necessário durante uma correção, atualização ou implementação de um novo caso, um exemplo simples pode ser visto nesse PR https://github.com/akretion/boleto_cnab_api/pull/11/files , mas também é possível alterar o Dockerfile para criar uma imagem de teste onde seja possível editar os arquivos dentro do container (o que evita subir um commit desnecessário ou com erro), para isso no arquivo Dockerfile são feitas as seguintes alterações: -Instalar Editores de texto, por exemplo vim ou nano, configurar o locales para o pt_BR.UTF-8 para evitar erro com caracteres e alterar o usuário app para o root para poder editar os arquivos +Instalar algum editor de texto, por exemplo VIM ou Nano (por padrão o VI já está instalado mas caracteres UTF-8 não são mostrados corretamente) e alterar o usuário **app** para o **root** para poder editar os arquivos ```bash --RUN apt-get install -y --no-install-recommends build-essential ghostscript git ruby-dev bundler -+RUN apt-get install -y --no-install-recommends build-essential ghostscript git ruby-dev bundler vim locales nano -+ -+RUN sed -i -e 's/# pt_BR.UTF-8 UTF-8/pt_BR.UTF-8 UTF-8/' /etc/locale.gen && \ -+ dpkg-reconfigure --frontend=noninteractive locales && \ -+ update-locale LANG=pt_BR.UTF-8 + git \ + ruby-dev \ ++ vim \ ++ nano \ + && rm -rf /var/cache/apk/* \ + ; -USER app +USER root - ``` Criação da imagem @@ -113,48 +114,66 @@ Localizar o container ID $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -f265658f13ab 4abc53b9d1a2 "/bin/sh -c 'bundle …" About an hour ago Up About an hour 9292/tcp - -Acessando o container +1ea95da3a3c3 akretion/boleto_cnab_api-teste "/bin/sh -c 'bundle …" 4 minutes ago Up 4 minutes 0.0.0.0:9292->9292/tcp, :::9292->9292/tcp eloquent_noether +``` -$ docker exec -it /bin/bash +Acessando o container (No Debian usa /bin/bash no Alpine /bin/sh) +```bash +$ docker exec -it /bin/sh O valor varia, nesse exemplo o comando seria -$ docker exec -it f265658f13ab /bin/bash - -Dentro do container, é preciso localizar a pasta onde está instalada a biblioteca, no exemplo é usado o comando find - -root@f265658f13ab:/usr/src/app# find /usr -name unicred.rb -/usr/local/bundle/bundler/gems/brcobranca-7bad3e5da8f6/lib/brcobranca/retorno/cnab400/unicred.rb -/usr/local/bundle/bundler/gems/brcobranca-7bad3e5da8f6/lib/brcobranca/remessa/cnab240/unicred.rb -/usr/local/bundle/bundler/gems/brcobranca-7bad3e5da8f6/lib/brcobranca/remessa/cnab400/unicred.rb -/usr/local/bundle/bundler/gems/brcobranca-7bad3e5da8f6/lib/brcobranca/boleto/unicred.rb +$ docker exec -it 1ea95da3a3c3 /bin/sh +``` -A partir disso é possível realizar alterações necessárias +Dentro do container é preciso localizar a pasta onde está instalada a biblioteca, no exemplo é usado o comando **find** e a partir disso é possível realizar alterações necessárias +```bash +/usr/src/app # find /usr -name unicred.rb +/usr/lib/ruby/gems/3.3.0/bundler/gems/brcobranca-cd928e87554b/lib/brcobranca/retorno/cnab400/unicred.rb +/usr/lib/ruby/gems/3.3.0/bundler/gems/brcobranca-cd928e87554b/lib/brcobranca/remessa/cnab240/unicred.rb +/usr/lib/ruby/gems/3.3.0/bundler/gems/brcobranca-cd928e87554b/lib/brcobranca/remessa/cnab400/unicred.rb +``` -root@f265658f13ab:/usr/src/app# cd /usr/local/bundle/bundler/gems/brcobranca-7bad3e5da8f6/ -root@f265658f13ab:/usr/local/bundle/bundler/gems/brcobranca-7bad3e5da8f6# ls -CHANGELOG.md HISTORY.md README.md brcobranca.gemspec lib -Gemfile LICENSE Rakefile docs spec -root@f265658f13ab:/usr/local/bundle/bundler/gems/brcobranca-7bad3e5da8f6# vim lib/brcobranca/boleto/unicred.rb +A partir disso é possível realizar alterações necessárias, por exemplo verificar o valor de alguma variável "imprimindo" no LOG com o comando "puts" (algumas referencias https://www.dotnetperls.com/console-ruby https://www.rubyguides.com/2018/10/puts-vs-print/ http://ruby-for-beginners.rubymonstas.org/writing_methods/printing.html ) +```bash +/usr/src/app # vim /usr/lib/ruby/gems/3.3.0/bundler/gems/brcobranca-cd928e87554b/lib/brcobranca/ +boleto/unicred.rb + + def codigo_barras_segunda_parte + puts "TESTE puts algum valor qualquer " + "#{agencia}" + "#{agencia}#{conta_corrente}#{conta_corrente_dv}#{nosso_numero}#{nosso_numero_dv}" + end + end +``` +Nesse exemplo ao criar um Boleto do UNICRED é possível ver no LOG o resultado do "puts" +```bash +$ docker logs -f 28f2881e4dd7 +Puma starting in single mode... +* Puma version: 6.4.2 (ruby 3.3.3-p89) ("The Eagle of Durango") +* Min threads: 0 +* Max threads: 5 +* Environment: development +* PID: 1 +* Listening on http://0.0.0.0:9292 +Use Ctrl-C to stop +TESTE puts algum valor qualquer 1234 ``` -Se for preciso podemos acompanhar o LOG para ver se há algum erro ou para verificar "imprimindo" o valor de alguma variável com o comando "puts"(https://www.codesdope.com/ruby-putsputsputs/) é possível em outra aba ou terminal rodar o comando +Se a imagem estiver sendo iniciada dentro de um **Docker Compose**, por exemplo por um projeto Odoo é possível ver o LOG usando: ```bash -$ docker run -ti -p 9292:9292 akretion/boleto_cnab_api-3_3_2_slim +$ docker logs -f 28f2881e4dd7 Puma starting in single mode... -* Puma version: 6.4.2 (ruby 3.3.2-p78) ("The Eagle of Durango") +* Puma version: 6.4.2 (ruby 3.3.3-p89) ("The Eagle of Durango") * Min threads: 0 * Max threads: 5 * Environment: development -* PID: 6 +* PID: 1 * Listening on http://0.0.0.0:9292 Use Ctrl-C to stop -^C- Gracefully stopping, waiting for requests to finish -=== puma shutdown: 2024-06-07 15:28:38 +0000 === +- Gracefully stopping, waiting for requests to finish +=== puma shutdown: 2024-07-05 19:50:05 +0000 === - Goodbye! ``` -IMPORTANTE: por algum motivo as alterações dentro do container só tem efeito na primeira vez que o arquivo é Salvo, uma segunda alteração não tem efeito, isso pode ser algo referente ao comportamento da imagem, ou do docker ou do docker-compose, já que nos testes realizados esse container é iniciado e usado por outro container rodando o Odoo, é preciso investigar melhor para entender se isso é algo normal e já esperado ou se teria uma forma de corrigir, porque devido a isso para testar dessa forma está sendo necessário alterar uma vez e se for preciso fazer outra alteração sair do container fazer um kill e inicia-lo novamente. +**IMPORTANTE:** por algum motivo as alterações dentro do container só tem efeito na primeira vez que o arquivo é Salvo, uma segunda alteração não tem efeito, isso pode ser algo referente ao comportamento da imagem, ou do Docker ou do Docker Compose, já que nos testes realizados esse container é iniciado e usado por outro container rodando o Odoo, é preciso investigar melhor para entender se isso é algo normal e já esperado ou se teria uma forma de corrigir, porque devido a isso para testar dessa forma está sendo necessário alterar uma vez e se for preciso fazer outra alteração sair do container fazer um kill e inicia-lo novamente. From 96226000f88bda7d335840b4938231d60bded460 Mon Sep 17 00:00:00 2001 From: Magno Costa Date: Thu, 1 Aug 2024 17:50:10 -0300 Subject: [PATCH 3/4] =?UTF-8?q?[UPD]=20Atualizando=20para=20o=20Alpine=20l?= =?UTF-8?q?atest=20e=20adaptando=20o=20arquivo=20para=20padroniza=C3=A7?= =?UTF-8?q?=C3=A3o=20que=20o=20Docker=20est=C3=A1=20recomendando=20como=20?= =?UTF-8?q?'Warnings'=20ao=20fazer=20o=20'docker=20build'.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1501cb1..2562310 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ -FROM alpine:3.20.0 -MAINTAINER "raphael.valyi@akretion.com" +FROM alpine:latest +LABEL org.opencontainers.image.authors="raphael.valyi@akretion.com" WORKDIR /usr/src/app COPY . . @@ -28,4 +28,4 @@ RUN bundle config --global frozen 1 && bundle install EXPOSE 9292 USER app -CMD bundle exec puma config.ru +CMD ["bundle", "exec", "puma", "config.ru"] From ca4b26b6763cdb7c7fd6fafe6a2235dbacd7d946 Mon Sep 17 00:00:00 2001 From: Magno Costa Date: Mon, 7 Oct 2024 20:01:52 -0300 Subject: [PATCH 4/4] [UPD] BRCobranca versao 11.1.0 --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1c8ab4e..111e4aa 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,8 +1,8 @@ GIT remote: https://github.com/kivanio/brcobranca.git - revision: cd928e87554bcd9eceadea6cf5a9a777f756b1b8 + revision: a846c103eeefb5d7bc5d7f35c0b493366622425c specs: - brcobranca (11.0.0) + brcobranca (11.1.0) fast_blank parseline (>= 1.0.3) rghost (>= 0.9.8)