Skip to content

Commit

Permalink
Merge pull request #58 from portabilis/portabilis-patch-2020-08-14
Browse files Browse the repository at this point in the history
Portabilis patch 2020/08/14
  • Loading branch information
jayata authored Aug 14, 2020
2 parents f1ce824 + d9038cd commit 63ba2ae
Show file tree
Hide file tree
Showing 235 changed files with 6,402 additions and 932 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,6 @@ Gemfile.plugins

# Setup
.setup

# Docker
docker-compose.override.yml
15 changes: 10 additions & 5 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ gem 'aws-sdk', '2.9.7'
gem 'backbone-nested-attributes', '0.3.0', git: 'https://github.com/samuelsimoes/backbone-nested-attributes.git'
gem 'binding_of_caller', '0.8.0'
gem 'bootbox-rails', '~>0.4'
gem 'bootstrap3-datetimepicker-rails', '~> 4.17.47'
gem 'browser', '~> 4.1.0'
gem 'bulk_insert', '1.1.0'
gem 'carrierwave', '0.11.2'
Expand All @@ -31,18 +32,18 @@ gem 'handlebars_assets', '0.23.2'
gem 'has_scope', '0.5.1'
gem 'honeybadger', '4.5.6'
gem 'i18n_alchemy', '0.2.1', git: 'https://github.com/giustin/i18n_alchemy.git', branch: 'master', tag: 'v0.2.1'
gem 'jbuilder', '2.2.16'
gem 'jbuilder', '2.9.1'
gem 'js-routes', '1.4.9'
gem 'kaminari', '0.16.3'
gem 'less-rails', '3.0.0'
gem 'loofah', '2.2.3'
gem 'mask_validator', '0.2.1'
gem 'momentjs-rails', '>= 2.9.0'
gem 'nokogiri', '1.8.5'
gem 'non-stupid-digest-assets', '1.0.9'
gem 'paperclip', '5.2.1'
gem 'pg', '0.17.1'
gem 'pg_query', '1.2.0'
gem 'pghero', '2.2.1'
gem 'postgres-copy', '1.0.0'
gem 'prawn', '2.1.1', git: 'https://github.com/portabilis/prawn.git', branch: 'master', tag: 'v2.1.1'
gem 'prawn-table', '0.2.2'
Expand All @@ -61,10 +62,9 @@ gem 'route_translator', git: 'https://github.com/enriclluelles/route_translator.
gem 'rubyzip', '1.2.2', require: 'zip'
gem 'sdoc', '0.4.1', group: :doc
gem 'sidekiq', '5.0.3'
gem 'sidekiq-unique-jobs', '4.0.18'
gem 'sidekiq-unique-jobs', '6.0.22'
gem 'simple_form', '3.1.0'
gem 'sinatra', '1.4.6', require: nil
gem 'skylight'
gem 'therubyracer', '0.12.2'
gem 'twitter-bootstrap-rails', '3.2.0'
gem 'uglifier', '4.1.20'
Expand All @@ -79,6 +79,9 @@ gem 'dry-inflector', '0.1.2'
gem 'launchy', '2.4.3'
gem 'signet', '0.11.0'

# Adiciona gem de dependencia para fixar a versão e remover warning
gem 'thor', '0.19.1'

instance_eval File.read('Gemfile.plugins') if File.exists?('Gemfile.plugins')

group :development do
Expand All @@ -101,17 +104,19 @@ group :test do
gem 'factory_girl_rails', '4.5.0'
gem 'faker', '1.9.1'
gem 'pdf-inspector', '1.2.1', require: 'pdf/inspector'
gem 'poltergeist', '1.8.1'
gem 'pry', '0.10.3'
gem 'rspec-rails', '3.4.0'
gem 'rspec-retry', '0.6.2 '
gem 'rspec-sidekiq', '3.0.3'
gem 'rspec-wait', '0.0.9'
gem 'selenium-webdriver', '~> 3.0'
gem 'shoulda-matchers', '3.0.1'
gem 'simplecov', '0.12.0'
gem 'timecop', '0.8.1'
gem 'gherkin', '2.12.2'
gem 'turnip', '1.3.1'
gem 'vcr', '3.0.0'
gem 'webdrivers', '3.6.0'
gem 'webmock', '1.24.6'
end

Expand Down
175 changes: 103 additions & 72 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

# i-Diário

Portal do professor integrado com o software livre [i-Educar](https://github.com/portabilis/i-educar)
Portal do professor integrado com o software livre [i-Educar](https://github.com/portabilis/i-educar).

## Comunicação

Expand All @@ -29,55 +29,81 @@ comunidade i-Educar e não terá suporte da Portabilis - mantenedora do projeto.

## Instalação

- Baixar o i-Diário:
Há duas formas de fazer a instalação:

- [Instalação utilizando Docker](#Instalação-utilizando-Docker)
- [Instalação em Servidor](#Instalação-em-Servidor-(Testado-no-Ubuntu-18.04))

### Instalação utilizando Docker

> ATENÇÃO: Essa forma de instação tem o objetivo de facilitar demonstrações e desenvolvimento. Não é recomendado para
> ambientes de produção!
Para instalar o projeto execute todos os passos abaixo.

Clone o repositório:

```bash
$ git clone https://github.com/portabilis/i-diario.git
$ cd i-diario
git clone https://github.com/portabilis/i-diario.git && cd i-diario
```

- Copiar o exemplo de configurações de banco de dados e configurar:
Faça o build das imagens Docker utilizadas no projeto (pode levar alguns minutos) e inicie os containers da aplicação:

```bash
$ cp config/database.sample.yml config/database.yml
docker-compose up -d --build
```

Use o comando `docker-compose logs -f app` para acompanhar o log da aplicação.

Aguarde a instalação finalizar até algo similar aparecer na tela:

```log
idiario | => Ctrl-C to shutdown server
idiario | Puma starting in single mode...
idiario | * Version 4.3.1 (ruby 2.3.7-p456), codename: Mysterious Traveller
idiario | * Min threads: 0, max threads: 16
idiario | * Environment: development
idiario | * Listening on tcp://0.0.0.0:3000
idiario | Use Ctrl-C to stop
```

### Com Docker
Você poderá acessar o i-Diário na URL [http://localhost:3000](http://localhost:3000) com o login `admin` e a senha
`123456789`.

No `config/database.yml` mudar o `host` para `host: postgres`.
#### Personalizando a instalação via Docker

- Rode `docker-compose up`.
Você pode criar um arquivo `docker-compose.override.yml` para personalizar sua instalação do i-Diário, mudando as portas
dos serviços ou o mapeamento dos volumes extras para a aplicação.

Por baixo dos panos, será feito:
- setup do `secret_key_base`;
- setup do banco;
- setup das páginas de erro.
### Instalação em Servidor (Testado no Ubuntu 18.04)

Pule para o [**Configuração da Aplicação**](#Configuração-da-Aplicação).
- Instale o Ruby 2.3.7 (recomendamos uso de um gerenciador de versões como [Rbenv](https://github.com/rbenv/rbenv) ou [Rvm](https://rvm.io/))
- Instale o Postgres e faça a configuração em `database.yml`
- Instale a biblioteca `libpq-dev`

### Sem Docker (Testado no Ubuntu 18.04)
```bash
sudo apt install libpq-dev
```

- Instalar o Ruby 2.3.7 (Recomendamos uso de um gerenciador de versões como [Rbenv](https://github.com/rbenv/rbenv) ou [Rvm](https://rvm.io/))
- Instalar Postgres e configurar para fazer coincidir com o configurado em `database.yml`
- Instalar a biblioteca `libpq-dev`
- Instale Redis

```bash
$ sudo apt install libpq-dev
sudo apt install redis-server
```

- Instalar a gem Bundler:
- Instale a gem Bundler:

```bash
$ gem install bundler -v '1.17.3'
gem install bundler -v '1.17.3'
```

- Instalar as gems:
- Instale as gems:

```bash
$ bundle install
bundle install
```

- Criar e configurar o arquivo `config/secrets.yml` conforme o exemplo:
- Crie e configure o arquivo `config/secrets.yml` conforme o exemplo:

```yaml
development:
Expand All @@ -87,12 +113,13 @@ development:
SMTP_DOMAIN: SMTP_DOMAIN
SMTP_USER_NAME: SMTP_USER_NAME
SMTP_PASSWORD: SMTP_PASSWORD
NO_REPLY_ADDRESS: NO_REPLY_ADDRESS
BUCKET_NAME: S3_BUCKET_NAME
```
_Nota: Você pode gerar uma chave secreta usando o comando `bundle exec rake secret`_

- Criar e configurar o arquivo `config/aws.yml` conforme o exemplo:
- Crie e configure o arquivo `config/aws.yml` conforme o exemplo:

```yaml
development:
Expand All @@ -101,45 +128,41 @@ development:
```

- Criar o banco de dados:
- Crie o banco de dados:

```bash
$ bundle exec rake db:create
$ bundle exec rake db:migrate
bundle exec rake db:create
bundle exec rake db:migrate
```

- Criar páginas de erro simples para desenvolvimento:
- Crie as páginas de erro para desenvolvimento:

```bash
$ cp public/404.html.sample public/404.html
$ cp public/500.html.sample public/500.html
cp public/404.html.sample public/404.html
cp public/500.html.sample public/500.html
```

## Configuração da Aplicação

- Criar uma entidade:
- Crie uma entidade:

```bash
$ bundle exec rake entity:setup NAME=prefeitura DOMAIN=localhost DATABASE=prefeitura_diario
bundle exec rake entity:setup NAME=prefeitura DOMAIN=localhost DATABASE=prefeitura_diario
```

- Criar um usuário administrador:

Abra o `rails console`.

Sem docker:
Inicie o servidor:

```bash
$ bundle exec rails console
bundle exec rails server
```

Com docker:
### Primeiro acesso

Antes de realizar o primeiro acesso, crie um usuário administrador:

```bash
$ docker exec -it idiario bundle exec rails console
bundle exec rails console
```

Crie um usuário administrador.
Crie o usuário administrador, substitua as informações que deseje:

```ruby
Entity.last.using_connection {
Expand All @@ -154,25 +177,18 @@ Entity.last.using_connection {
}
```

Iniciar o servidor:

```bash
$ bundle exec rails server
```

Para acessar o sistema, use a URL http://localhost:3000

### [PgHero](https://github.com/ankane/pghero)

Usamos o PgHero para monitorar o banco de dados. Recomendamos a leitura da
documentação.
Agora você poderá acessar o i-Diário na URL [http://localhost:3000](http://localhost:3000) com as credenciais fornecidas
no passo anterior.

## Sincronização com i-Educar

- Para executar a sincronização é necessário estar com o sidekiq rodando:
- Para fazer a sincronização entre i-Educar e i-Diário é necessário estar com o Sidekiq rodando:

```bash
$ bundle exec sidekiq -d
# (Docker) docker-compose exec app bundle exec sidekiq -d
bundle exec sidekiq -d
```

- Acessar Configurações > Api de Integraçao e configurar os dados do sincronismo
- Acessar Configurações > Unidades e clicar em **Sincronizar**
- Acessar Calendário letivo, clicar em **Sincronizar** e configurar os calendários
Expand All @@ -183,39 +199,54 @@ $ bundle exec sidekiq -d

_Nota: Após esses primeiros passos, recomendamos que a sincronização rode pelo menos diariamente para manter o i-Diário atualizado com o i-Educar_

## Rodar os testes
## Executar os testes

```bash
$ RAILS_ENV=test bundle exec rake db:create
$ RAILS_ENV=test bundle exec rake db:migrate
# (Docker) docker-compose exec app RAILS_ENV=test bundle exec rake db:create
RAILS_ENV=test bundle exec rake db:create
# (Docker) docker-compose exec app RAILS_ENV=test bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:migrate
```

```bash
$ bin/rspec spec
# (Docker) docker-compose exec app bin/rspec spec
bin/rspec spec
```

## Upgrades

### Upgrade para a versão 1.1.0

Nessa atualização a sincronização entre i-educar e i-diário foi completamente reestruturada e com isso o i-diário passa a ter dependência da versão **2.1.18** do i-educar.
Nessa atualização a sincronização entre i-Educar e i-Diário foi completamente reestruturada e com isso o i-Diário passa
a ter dependência da versão **2.1.18** do i-Educar.

Para o upgrade é necessário:
Para o upgrade é necessário atualizar o i-Diário para a versão [1.1.0](https://github.com/portabilis/i-diario/releases/tag/1.1.0).

Parar o sidekiq:

* Atualizar o fonte para a versão 1.1.0
* Parar o sidekiq:
```bash
$ ps -ef | grep sidekiq | grep -v grep | awk '{print $2}' | xargs kill -TERM && sleep 20
ps -ef | grep sidekiq | grep -v grep | awk '{print $2}' | xargs kill -TERM && sleep 20
```
* Rodar as migrations:

* Executar as migrations:

```bash
$ bundle exec rake db:migrate
# (Docker) docker-compose exec app bundle exec rake db:migrate
bundle exec rake db:migrate
```

* Iniciar o sidekiq:

```bash
$ bundle exec sidekiq -d --logfile log/sidekiq.log
# (Docker) docker-compose exec app bundle exec sidekiq -d --logfile log/sidekiq.log
bundle exec sidekiq -d --logfile log/sidekiq.log
```
* Executar a rake task que vai remover as enturmações e rodar a sincronização completa em todas as entidades:

* Executar a rake task que irá fazer a atualização do banco de dados e executar a sincronização completa em todas as
entidades:

```bash
$ bundle exec rake upgrade:versions:1_1_0
# (Docker) docker-compose exec app bundle exec rake upgrade:versions:1_1_0
bundle exec rake upgrade:versions:1_1_0
```
Binary file added app/assets/images/finger.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions app/assets/javascripts/application.js.erb
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
//= require educacao
//= require select2
//= require select2_remote
//= require select2_ajax
//= require cocoon
//= require cocoon-nested-inputs
//= require jquery-file-upload/vendor/jquery.ui.widget
Expand Down Expand Up @@ -54,6 +55,10 @@
//= require jquery-regex-mask
//= require bootstrap_config
//= require bootbox
//= require moment
//= require moment/pt-br
//= require bootstrap-datetimepicker
//= require date
<% if File.exists?('vendor/assets/javascripts/plugins.js') %>
<%= require_asset 'plugins' %>
<% end %>
Loading

0 comments on commit 63ba2ae

Please sign in to comment.