AgenciaSustentabilidadyCambioClimatico / accion

Código de los sistemas de soporte de los instrumentos de la Agencia
http://ascc.cl/
GNU General Public License v3.0
4 stars 2 forks source link
agreements certifications enterprise-services footprints governance government sustainability sustainable-competitive-advantage sustainable-development-goals

SISTEMA DE GESTIÓN DE PROCESOS DE NEGOCIO DE LA ASCC

Sitio web

Página de ascc

Tabla de contenido

Quiénes Somos

La Agencia de Sustentabilidad y Cambio Climático es un comité de la Corporación de Fomento de la Producción (CORFO) cuya misión institucional es Fomentar la producción sustentable y la mitigación y adaptación al cambio climático en las empresas, con énfasis en las PYME y en los territorios, a través del diálogo y la colaboración público privada.

Aspiramos a ser referente en materia de cooperación público privada en el desarrollo de una economía sustentable, resiliente y baja en carbono, y en el cumplimiento de los compromisos internacionales asumidos por Chile en estas materias.

Descripción de la Aplicación

Esta plataforma de código libre tiene como fin último permtir el reporte de las contribuciones realizadas por las empresas en conjunto con la agencia y otras organizaciones a la Agenda 2030 para el Desarrollo Sustentable y a la lucha contra el cambio climático.

Si bien esa es la visión última de su desarrollo, en su estado actual tiene como productos operables el sistema de postulación de ideas de acuerdo, la generación, auditoría y certificación de cumplimiento de las metas y acciones comprometidas por organizaciones, incluyendo funcionalidades de notificacion, recordatorios, encuestas, consultas públicas, inventarios de datos productivo-ambientales, generación dinámica de documentos, un sistema de gestión de permisos bastante configurable, un sistema de reporte y seguimiento de sugerencias y errores, así como otras funcionalidades que otorgan bastante libertad para adaptar su uso.

Existen aún varias funcionalidades en curso, por desarrollar, por pulir y por profundizar. Nuestra intención al disponer esta plataforma de manera libre, es permitir que usuarios institucionales la puedan modificar y adaptar a sus propios fines, fortaleciendo al mismo tiempo las funcionalidades base de la misma. Lo único importante es que esas versiones sigan siendo libres, decir, se distribuyan y/o modifiquen bajo los términos de la licencia GNU General Public License publicados por la Free Software Foundation en su versión 3 (GNU GPLv3).

Tecnologías Utilizadas

A continuación se detallan las diferentes tecnologías utilizadas para el desarrollo de esta aplicación web.

1. Sistema Operativo:

2. Lenguajes de Programación:

3. Framework

4. Base de Datos

5. Herramientas adicionales

6. Otros

  gem "animate-rails"
  gem "hashid-rails", "~> 1.0"
  gem 'activerecord-session_store'
  gem 'autonumeric-rails'
  gem 'axlsx' #para crear y manejar el contenido de archivos 'xls' y 'xlsx'
  gem 'axlsx_rails' #para agrega la funcionalidad de la gema 'axlsx' a rails
  gem 'bootstrap', '~> 4.0.0'
  gem 'carrierwave', '~> 1.0' #para el manejo y almacenamiento de archivos 'subidos' al sistema
  gem 'chartkick'#para la contrucción de gráficos en las vistas 
  gem 'ckeditor', github: 'galetahub/ckeditor'
  gem 'crontab_syntax_checker' #para manejar el uso del daemon 'cron' a nivel del sistema operativo
  gem 'daemons' #para controlar acceder y controlar otros daemons del sistema operativo
  gem 'data-confirm-modal'
  gem 'datejs-rails' 
  gem 'delayed_job' #para agendar la ejecución de tareas en el futuro
  gem 'delayed_job_active_record' #complementa la gema 'delayed_job'
  gem 'devise' #para control de usuarios y credenciales de acceso
  gem 'devise_invitable' #complementa la gema 'devise'
  gem 'font-awesome-rails' #para el uso de la librería de íconos 'font-awesome'
  gem 'geocoder' 
  gem 'geoxml-rails' 
  gem 'haml' #para uso de haml
  gem 'haml-rails', '~> 1.0' #complementa la gema 'haml'
  gem 'htmltoword'
  gem 'httparty'
  gem 'jquery-datatables' #para mayor control en ruby de la librería 'datatable' de JQuery 
  gem 'jquery-rails' #para el uso de la librería JQuery
  gem 'nested_form' #para el uso adecuado de formularios anidados
  gem 'pg' #para manejar el acceso a PostgreSQL
  gem 'prawn', '~>2.2.2'
  gem 'puma', '~> 3.7' #para el uso puma
  gem 'pundit'
  gem 'puredocx', '~> 0.0.2' #para crear y manejar el contenido de archivos 'doc' y 'docx'
  gem 'quilljs-rails'
  gem 'rails', '~> 5.1.6' #implementa el framework RAILS
  gem 'roo' #extiene del uso de archivos 'xls'
  gem 'roo-xls'
  gem 'ruby-units', '~> 2.3'
  gem 'rubyzip', '~> 1.2.0' #para manejar la compresión 'zip' de archivos
  gem 'rut_validation' 
  gem 'sass-rails', '~> 5.0' #para el uso de sass
  gem 'simple_form' #para el uso de formularios simplificados
  gem 'uglifier', '>= 1.3.0'
  gem 'zip-zip' #complementa el manejo de archivos 'zip'

Prerrequisitos de Instalación

1. Sistema Operativo Debian GNU/Linux versión 9 (‘stretch’)

Para instalar este Sistema Operativo, se deben seguir las instrucción de la página oficial de Debian. Si se desea instalar Ubuntu, puede visitar la página web de Ubuntu

2. Conexión a Internet en el servidor

Configuración e Instalación

Para configurar e instalar el sistema es necesario utilizar un usuario con privilegios de administrador. Se recomienda crear un usuario distinto de root, y a continuación se indicará como obtener y utilizar dicho usuario:

Creación y configuración del usuario

Instalación de Ruby

Se debe utilizar el usuario creado previamente para la realización de los siguientes pasos:

Para ello ingresar en la consola de comando lo siguiente: En Ubuntu para instalar los paquetes del sistema operativo se debe usar el comando 'apt-get', En Debian, se usa el comando 'apt' :

  sudo apt-get install curl

  curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
  curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
  echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

  sudo apt-get update
  sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev nodejs yarn

Una vez concluida la instalación, favor continuar con el siguiente paso.

3. Configurar Git

El proyecto fue desarrollado utilizando el sistema de control de configuración y versionamiento Git, que permite el uso de Github. Si aún no tiene una cuenta Github, asegúrese de registrarse .

Se debe reemplazar el nombre y dirección de correo electrónico en los siguientes pasos con su cuenta de Github:

git config --global color.ui true
git config --global user.name "YOUR NAME"
git config --global user.email "YOUR@EMAIL.com"
ssh-keygen -t rsa -b 4096 -C "YOUR@EMAIL.com"

El siguiente paso es tomar la clave SSH recién generada y agregarla a la cuenta de Github, ejecutando el siguiente comando en consola:

cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPgbgJq4oZJwtdCtWHXITAefS9tb9HfuKlLL/PWrL/F+NoZuvHER/40rDwe2uKEkMT56jL2nJzi011PxKutVevuKy03casnVFLsAZXKch/gcXOz8V7jstUk7TLQAwEsLkAXfhswJNCQXThBz5ZrK14hhokVwViGM9nWEUz5EBUx4+LaL9jHJ1/XhJZ1QM4jTXJ4NhA50yG3mbhja+J1rYYgg3PREqdfF+n6ih+Fx0lfuXnFDpFfulGM7c6G5G7u7nAr8Vk0u9VVZT9Xbz8SjttronwagIwBb/7qUfvOXuF xxxxxxx@xxxxxxxx.com

Se debe copiar la salida del comando anteriormente ingresado y pegarlo aquí .

Una vez hecho esto, se puede verificar su correcto funcionamiento con el comando:

ssh -T git@github.com

Que debe entregar un mensaje como este:

Hi user! You've successfully authenticated, but GitHub does not provide shell access.

4. Instalar Rails

Previo a la instalación de Rails, se debe contar con un motor de ejecución de Javascript como NodeJS, que ya fue instalado como dependencia de Ruby en los pasos anteriores. Esto le permite usar Coffeescript y Asset Pipeline en Rails, que combina y comprime las librerías de Javascript utilizadas, para proporcionar un entorno de producción más rápido.

En caso de que haya habido algún problema en la instalación de nodejs, se puede instalar desde su repositorio oficial:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

Luego , se debe instalar Rails, ejecutando el siguiente comando en consola

gem install rails -v 5.1.6.1

Para verificar su correcta instalación, se debe ejecutar rails -ven consola:

rails -v
# Rails 5.1.6.1

5. Configurando PostgreSQL

PostgreSQL se instala desde su repositorio oficial, con los siguientes pasos:

sudo sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' > /etc/apt/sources.list.d/pgdg.list"
wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-common
sudo apt-get install postgresql-9.5 libpq-dev

Se debe crear la base de datos que usará el proyecto, para lo cual debe ejecutar:

sudo -u postgres createdb nombre_de_la_base_de_datos

Luego es necesario configurar un usuario con permisos para acceder a dicha base de datos:

#creación del usuario (reemplazar nombre_del_usuario por el nombre que usted desee)
sudo -u postgres createuser nombre_del_usuario -s

# agregar la contraseña del usuario
sudo -u postgres psql 
alter user nombre_del_usuario with password 'nueva_contraseña_del_usuario';

# agregar los permisos de acceso a la base de datos, para el usuario creado
sudo -u postgres psql
grant all privileges on database nombre_de_la_base_de_datos to nombre_de_usuario;

Configuración de Variables de entorno

Las variables de entorno corresponden a variables asociadas a los usuarios del sistema, en forma general (variables para todos los usuarios) o específica (variables para un solo usuario). Se recomienda configurar variables específicas para el usuario que instalará la aplicación. Estas variables permiten modificar ciertas configuraciones (como por ejemplo la IP y credenciales de acceso a la base de datos) sin alterar el código de la aplicación.

Variables de entorno

Pueden configurarse dentro de los archivos .profile o .bash_profile o .bashrc, pero como el proyecto usa la gema Capistrano para realizar el despliegue, y ello se realiza mediante un shell no interactivo, es necesario que dichas variables sean configuradas en el encabezado del archivo .bashrc, antes de la ejecución de las siguientes líneas de código contenidas en dicho archivo: executed by bash(1) for non-login shells.

Las variables de entorno utilizadas son:

Variables de entorno para ambiente de producción/pruebas:

Variable Descripción
PGPASSWORD Contraseña de PGP
GOOGLE_API_KEY LLave para uso de la API de Google para manejo de mapa, Mas información
SECRET_KEY_BASE Se utiliza para verificar la integridad de las cookies firmadas.
LOCALHOST_PSQL_SERVER URL/IP de conexión al servidor de base de datos
LOCALHOST_PSQL_USERNAME Nombre del usuario que accede a la base de datos
LOCALHOST_PSQL_PASSWORD Contraseña del usuario que accede a la base de datos
MAILER_ASSET_HOST URL del ambiente de producción
MAILER_ASSET_HOST_STAGING URL del ambiente de pruebas
MAILER_DEFAULT_URL_OPTIONS_HOST URL del ambiente de desarrollo de la aplicación
MAILER_DEFAULT_URL_OPTIONS_HOST_STAGING URL del ambiente de pruebas de la aplicación
MAILER_DEFAULT_URL_OPTIONS_PORT Puerto por defecto del servidor de envío de correos
MAILER_DEFAULT_CONTACTO Email de contacto para los correos enviados
MAILER_SMTP_SETTINGS_ADDRESS URL/IP de servidor de envío de correos
MAILER_SMTP_SETTINGS_PORT Puerto que utiliza el servidor de envío de correos
MAILER_SMTP_SETTINGS_DOMAIN Dominio del servidor de envío de correos
MAILER_SMTP_SETTINGS_USER_NAME Nombre del usuario que accede al servidor de envío de correos
MAILER_SMTP_SETTINGS_PASSWORD Contraseña del usuario que accede al servidor de envío de correos
MAILER_SMTP_SETTINGS_AUTHENTICATION Tipo de autenticación del servidor de envío de correos
MAILER_SMTP_SETTINGS_ENABLE_STARTTLS_AUTO 'true' si el servidor de envío de correos utiliza certificado SSL

Variables de entorno para despliegue:

Variable Descripción
ASCC_SHARED_DIR Ubicación de la carpeta con archivos comunes a todas las versiones desplegadas
PROD_ASCC_APP_DIR Ubicación de la carpeta del ambiente de producción
PROD_ASCC_REPO_URL Acceso al repositorio git del proyecto (por ejemplo 'https://github.com/AgenciaSustentabilidadyCambioClimatico/accion.git')
PROD_ASCC_REPO_BRANCH Rama del git desde la cual se hará el despliegue para el ambiente de producción (por ejemplo 'master')
PROD_ASCC_SERVER_USER Nombre del usuario para acceder al servidor sobre el cual se desplegará el proyecto en ambiente de producción
PROD_ASCC_SERVER_HOST URL/IP del servidor sobre el cual se desplegará el proyecto en ambiente de producción
PROD_ASCC_SERVER_DOMAIN Domino del servidor en ambiente de producción
PROD_ASCC_GATEWAY_USER Nombre del usuario para acceder al servidor de acceso intermedio
PROD_ASCC_GATEWAY_HOST URL/IP del servidor de acceso intermedio para realizar el despliegue en ambiente de producción
STAG_ASCC_APP_DIR Ubicación de la carpeta del ambiente de pruebas
STAG_ASCC_REPO_URL Acceso al repositorio git del proyecto (por ejemplo 'https://github.com/AgenciaSustentabilidadyCambioClimatico/accion.git')
STAG_ASCC_REPO_BRANCH Rama del git desde la cual se hará el despliegue para el ambiente de pruebas (por ejemplo 'master')
STAG_ASCC_SERVER_USER Nombre del usuario para acceder al servidor sobre el cual se desplegará el proyecto en ambiente de pruebas
STAG_ASCC_SERVER_HOST URL/IP del servidor sobre el cual se desplegará el proyecto en ambiente de pruebas
STAG_ASCC_SERVER_DOMAIN Domino del servidor en ambiente de pruebas
STAG_ASCC_GATEWAY_USER URL/IP del servidor de acceso intermedio para realizar el despliegue en ambiente de pruebas

Archivo database.yml

Modificar el nombre de la base de datos database: por la que haya escogido previamente

Inicialización

El sistema puede inicializarse en forma local o remota:

I. En forma local

El sistema puede 'descargarse' desde github, ya sea mediante el botón 'download' contenido en esta misma página, ya mediante el comando de consola

git clone https://github.com/AgenciaSustentabilidadyCambioClimatico/accion.git

El sistema se inicializa como cualquier proyecto rails:

I.i. Gemas

Se deben instalar/actualizar las gemas mediante el comando:

bundle install

I.ii. Base de datos

Se debe inicializar la base de datos mediante los comandos:

#para crear la base de datos (si no se ha creado previamente)
rails db:create 

#para que se ejecuten las migraciones (creacíon de las tablas, relaciones, procedimientos de almacenaje y demás constrains)
rails db:migrate 

#para que se ingresen datos necesarios a las tablas correndientes
rails db:seed

I.iii. Servicio

El sistema se levanta en el ambiente de desarrollo con el comando:

rails server

El ambiente de producción se levanta con el comando

rails server -e production

Y el ambiente de pruebas con el comando

rails server -e staging

Para más información, Sitio oficial Ruby on Rails

II. En forma remota

Esta opción esta pensada para que un desarrollador del proyecto pueda realizar despliegues en forma remota sobre los servidores que contienen los ambientes de producción y pruebas (que pueden ser el mismo). Para tal efecto es necesario que el desarrollador ya cuente con el proyecto debidamente instalado en su computador, y que el o los servidores remotos cuenten con una carpeta carpeta_del_usuario/ascc/ambiente_a_desplegar/shared/config/ (por ejemplo: /home/usuario1/ascc/production/shared/config/) con los siguientes archivos debidamente configurados:

Contando con lo anterior, el despliegue de una nueva versión (o de la versión inicial) es tan simple como ejecutar desde la carpeta del sistema en la consola del desarrollador:

Para el ambiente de producción:

cap production deploy

Para el ambiente de pruebas:

cap staging deploy

Terminado el proceso de instalación, el sistema ya estará desplegado y en ejecución en el ambiente de producción o pruebas, respectivamente, y se puede acceder a él ingresando la URL correspondiente a ese ambiente en el navegador de internet. Además en el servidor remoto se habrán creado las siguientes carpetas:

carpeta_del_usuario/ascc/ambiente_a_desplegar/current => que contiene una referencia (link simbólico) a la última versión desplegada del sistema.

carpeta_del_usuario/ascc/ambiente_a_desplegar/releases => que contiene las últimas tres versiones desplegadas, para el caso que se quiera revertir el ambiente a una versión distinta de la actual.

carpeta_del_usuario/ascc/ambiente_a_desplegar/repo => que corresponde a la carpeta '.git' del desarrollador.

Más información

Licencia

ACCION

Copyright © 2019 Agencia de Sustentabilidad y Cambio Climático.

Este programa es un software libre: puede ser distribuido y/o modificado bajo los términos de la licencia GNU General Public License publicados por la Free Software Foundation en su versión 3 (GNU GPLv3). Mire el archivo LICENSE para más detalles.

Créditos

BinaryBag es una empresa chilena del tipo “Boutique” formada con el espíritu de resolver problemas difíciles en el ámbito de los productos de software. Somos una empresa de ingeniería de sistemas que desde su creación el año 2007, ha brindado al mercado soluciones de alto nivel, eficientes y que brindan un gran valor a los procesos que nuestros clientes han resuelto con nuestras soluciones.

BinaryBag ha desarrollado una sólida línea de trabajo en proyectos de ingeniería informática, haciendo posible que las nuevas tecnologías sean de uso diario en las organizaciones ampliando las posibilidades de ellas y haciendo más eficientes todos los procesos que ellas desarrollan.

Nuestra empresa se ha especializado en dar servicios de alto valor agregado contando con experiencia en el desarrollo exitoso de diversos proyectos. Poseemos experiencias recientes que nos posicionan de manera importante y diferenciada en el mercado.